├── .gitattributes ├── .github ├── scripts │ ├── contrib.sh │ └── trailing-newlines.sh └── workflows │ └── checks.yml ├── .gitignore ├── CONTRIBUTORS ├── FILES.md ├── LICENSE ├── Makefile ├── README.contributing ├── README.development ├── README.md ├── README.name ├── VARS.md ├── documentation ├── computing_intervals.md ├── db_check.md ├── deletion.md ├── due.md ├── glossary.md ├── hooks.md ├── links.md ├── preview.md ├── profiles.md ├── scheduler.md ├── synchronization.md └── templates_generation_rules.md ├── meta ├── .gitignore └── version ├── pkgkey.asc ├── proto ├── .gitignore └── backend.proto ├── pylib ├── .gitignore ├── .isort.cfg ├── .pylintrc ├── FILES.md ├── Makefile ├── anki │ ├── .gitignore │ ├── FILES.md │ ├── __init__.py │ ├── cards.py │ ├── collection.py │ ├── config.py │ ├── consts.py │ ├── db.py │ ├── dbproxy.py │ ├── decks.py │ ├── errors.py │ ├── exporting.py │ ├── find.py │ ├── hooks.py │ ├── httpclient.py │ ├── importing │ │ ├── FILES.md │ │ ├── __init__.py │ │ ├── anki2.py │ │ ├── apkg.py │ │ ├── base.py │ │ ├── csvfile.py │ │ ├── mnemo.py │ │ ├── noteimp.py │ │ ├── pauker.py │ │ └── supermemo_xml.py │ ├── lang.py │ ├── latex.py │ ├── media.py │ ├── models.py │ ├── notes.py │ ├── py.typed │ ├── rsbackend.py │ ├── sched.py │ ├── schedv2.py │ ├── sound.py │ ├── stats.py │ ├── statsbg.py │ ├── stdmodels.py │ ├── storage.py │ ├── sync.py │ ├── tags.py │ ├── template.py │ ├── template_legacy.py │ ├── types.py │ └── utils.py ├── mypy.ini ├── pyproject.toml ├── requirements.dev ├── setup.py ├── tests │ ├── __init__.py │ ├── shared.py │ ├── support │ │ ├── anki12-broken.anki │ │ ├── anki12-due.anki │ │ ├── anki12.anki │ │ ├── anki2-alpha.anki2 │ │ ├── diffmodels1.anki │ │ ├── diffmodels2-1.apkg │ │ ├── diffmodels2-2.apkg │ │ ├── diffmodels2.anki │ │ ├── diffmodeltemplates-1.apkg │ │ ├── diffmodeltemplates-2.apkg │ │ ├── fake.png │ │ ├── invalid-ords.anki │ │ ├── media.apkg │ │ ├── mnemo.db │ │ ├── supermemo1.xml │ │ ├── suspended12.anki │ │ ├── text-2fields.txt │ │ ├── text-tags.txt │ │ ├── text-update.txt │ │ ├── update1.apkg │ │ └── update2.apkg │ ├── test_cards.py │ ├── test_collection.py │ ├── test_decks.py │ ├── test_exporting.py │ ├── test_find.py │ ├── test_flags.py │ ├── test_importing.py │ ├── test_latex.py │ ├── test_media.py │ ├── test_models.py │ ├── test_schedv1.py │ ├── test_schedv2.py │ ├── test_stats.py │ ├── test_template.py │ └── test_undo.py └── tools │ ├── FILES.md │ ├── __init__.py │ ├── diff-sched.py │ ├── genbackend.py │ ├── genhooks.py │ └── hookslib.py ├── qt ├── .gitignore ├── .isort.cfg ├── .pylintrc ├── FILES.md ├── Makefile ├── anki.1 ├── anki.desktop ├── anki.png ├── anki.xml ├── anki.xpm ├── aqt │ ├── .gitignore │ ├── FILES.md │ ├── __init__.py │ ├── about.py │ ├── addcards.py │ ├── addons.py │ ├── browser.py │ ├── clayout.py │ ├── customstudy.py │ ├── dbcheck.py │ ├── deckbrowser.py │ ├── deckchooser.py │ ├── deckconf.py │ ├── dyndeckconf.py │ ├── editcurrent.py │ ├── editor.py │ ├── emptycards.py │ ├── errors.py │ ├── exporting.py │ ├── fields.py │ ├── gui_hooks.py │ ├── importing.py │ ├── legacy.py │ ├── main.py │ ├── mediacheck.py │ ├── mediasrv.py │ ├── mediasync.py │ ├── modelchooser.py │ ├── models.py │ ├── mpv.py │ ├── overview.py │ ├── pinnedmodules.py │ ├── preferences.py │ ├── previewer.py │ ├── profiles.py │ ├── progress.py │ ├── py.typed │ ├── qt.py │ ├── reviewer.py │ ├── schema_change_tracker.py │ ├── sound.py │ ├── stats.py │ ├── studydeck.py │ ├── sync.py │ ├── tagedit.py │ ├── taglimit.py │ ├── taskman.py │ ├── theme.py │ ├── toolbar.py │ ├── tts.py │ ├── update.py │ ├── utils.py │ ├── webview.py │ └── winpaths.py ├── aqt_data │ └── web │ │ ├── .gitignore │ │ ├── browsersel.js │ │ ├── imgs │ │ ├── anki-logo-thin.png │ │ ├── gears.svg │ │ ├── media-record.png │ │ ├── more.png │ │ ├── paperclip.png │ │ ├── refresh.svg │ │ ├── text_bold.png │ │ ├── text_clear.png │ │ ├── text_cloze.png │ │ ├── text_italic.png │ │ ├── text_sub.png │ │ ├── text_super.png │ │ └── text_under.png │ │ ├── jquery-ui.js │ │ ├── jquery.js │ │ ├── mathjax │ │ ├── MathJax.js │ │ ├── conf.js │ │ ├── extensions │ │ │ ├── FontWarnings.js │ │ │ ├── HTML-CSS │ │ │ │ └── handle-floats.js │ │ │ ├── HelpDialog.js │ │ │ ├── MatchWebFonts.js │ │ │ ├── MathEvents.js │ │ │ ├── MathMenu.js │ │ │ ├── MathZoom.js │ │ │ ├── Safe.js │ │ │ ├── TeX │ │ │ │ ├── AMScd.js │ │ │ │ ├── AMSmath.js │ │ │ │ ├── AMSsymbols.js │ │ │ │ ├── HTML.js │ │ │ │ ├── action.js │ │ │ │ ├── autobold.js │ │ │ │ ├── autoload-all.js │ │ │ │ ├── bbox.js │ │ │ │ ├── begingroup.js │ │ │ │ ├── boldsymbol.js │ │ │ │ ├── cancel.js │ │ │ │ ├── color.js │ │ │ │ ├── enclose.js │ │ │ │ ├── extpfeil.js │ │ │ │ ├── mathchoice.js │ │ │ │ ├── mediawiki-texvc.js │ │ │ │ ├── mhchem.js │ │ │ │ ├── mhchem3 │ │ │ │ │ └── mhchem.js │ │ │ │ ├── newcommand.js │ │ │ │ ├── noErrors.js │ │ │ │ ├── noUndefined.js │ │ │ │ ├── unicode.js │ │ │ │ └── verb.js │ │ │ ├── asciimath2jax.js │ │ │ ├── fast-preview.js │ │ │ ├── jsMath2jax.js │ │ │ ├── mhchem.js │ │ │ ├── mml2jax.js │ │ │ ├── tex2jax.js │ │ │ └── toMathML.js │ │ ├── fonts │ │ │ └── HTML-CSS │ │ │ │ └── TeX │ │ │ │ └── woff │ │ │ │ ├── MathJax_AMS-Regular.woff │ │ │ │ ├── MathJax_Caligraphic-Bold.woff │ │ │ │ ├── MathJax_Caligraphic-Regular.woff │ │ │ │ ├── MathJax_Fraktur-Bold.woff │ │ │ │ ├── MathJax_Fraktur-Regular.woff │ │ │ │ ├── MathJax_Main-Bold.woff │ │ │ │ ├── MathJax_Main-Italic.woff │ │ │ │ ├── MathJax_Main-Regular.woff │ │ │ │ ├── MathJax_Math-BoldItalic.woff │ │ │ │ ├── MathJax_Math-Italic.woff │ │ │ │ ├── MathJax_Math-Regular.woff │ │ │ │ ├── MathJax_SansSerif-Bold.woff │ │ │ │ ├── MathJax_SansSerif-Italic.woff │ │ │ │ ├── MathJax_SansSerif-Regular.woff │ │ │ │ ├── MathJax_Script-Regular.woff │ │ │ │ ├── MathJax_Size1-Regular.woff │ │ │ │ ├── MathJax_Size2-Regular.woff │ │ │ │ ├── MathJax_Size3-Regular.woff │ │ │ │ ├── MathJax_Size4-Regular.woff │ │ │ │ └── MathJax_Typewriter-Regular.woff │ │ └── jax │ │ │ ├── element │ │ │ └── mml │ │ │ │ ├── jax.js │ │ │ │ └── optable │ │ │ │ ├── Arrows.js │ │ │ │ ├── BasicLatin.js │ │ │ │ ├── CombDiacritMarks.js │ │ │ │ ├── CombDiactForSymbols.js │ │ │ │ ├── Dingbats.js │ │ │ │ ├── GeneralPunctuation.js │ │ │ │ ├── GeometricShapes.js │ │ │ │ ├── GreekAndCoptic.js │ │ │ │ ├── Latin1Supplement.js │ │ │ │ ├── LetterlikeSymbols.js │ │ │ │ ├── MathOperators.js │ │ │ │ ├── MiscMathSymbolsA.js │ │ │ │ ├── MiscMathSymbolsB.js │ │ │ │ ├── MiscSymbolsAndArrows.js │ │ │ │ ├── MiscTechnical.js │ │ │ │ ├── SpacingModLetters.js │ │ │ │ ├── SuppMathOperators.js │ │ │ │ ├── SupplementalArrowsA.js │ │ │ │ └── SupplementalArrowsB.js │ │ │ ├── input │ │ │ ├── AsciiMath │ │ │ │ ├── config.js │ │ │ │ └── jax.js │ │ │ ├── MathML │ │ │ │ ├── config.js │ │ │ │ ├── entities │ │ │ │ │ ├── a.js │ │ │ │ │ ├── b.js │ │ │ │ │ ├── c.js │ │ │ │ │ ├── d.js │ │ │ │ │ ├── e.js │ │ │ │ │ ├── f.js │ │ │ │ │ ├── fr.js │ │ │ │ │ ├── g.js │ │ │ │ │ ├── h.js │ │ │ │ │ ├── i.js │ │ │ │ │ ├── j.js │ │ │ │ │ ├── k.js │ │ │ │ │ ├── l.js │ │ │ │ │ ├── m.js │ │ │ │ │ ├── n.js │ │ │ │ │ ├── o.js │ │ │ │ │ ├── opf.js │ │ │ │ │ ├── p.js │ │ │ │ │ ├── q.js │ │ │ │ │ ├── r.js │ │ │ │ │ ├── s.js │ │ │ │ │ ├── scr.js │ │ │ │ │ ├── t.js │ │ │ │ │ ├── u.js │ │ │ │ │ ├── v.js │ │ │ │ │ ├── w.js │ │ │ │ │ ├── x.js │ │ │ │ │ ├── y.js │ │ │ │ │ └── z.js │ │ │ │ └── jax.js │ │ │ └── TeX │ │ │ │ ├── config.js │ │ │ │ └── jax.js │ │ │ └── output │ │ │ ├── CommonHTML │ │ │ ├── autoload │ │ │ │ ├── annotation-xml.js │ │ │ │ ├── maction.js │ │ │ │ ├── menclose.js │ │ │ │ ├── mglyph.js │ │ │ │ ├── mmultiscripts.js │ │ │ │ ├── ms.js │ │ │ │ ├── mtable.js │ │ │ │ └── multiline.js │ │ │ ├── config.js │ │ │ ├── fonts │ │ │ │ └── TeX │ │ │ │ │ ├── AMS-Regular.js │ │ │ │ │ ├── Caligraphic-Bold.js │ │ │ │ │ ├── Fraktur-Bold.js │ │ │ │ │ ├── Fraktur-Regular.js │ │ │ │ │ ├── Main-Bold.js │ │ │ │ │ ├── Math-BoldItalic.js │ │ │ │ │ ├── SansSerif-Bold.js │ │ │ │ │ ├── SansSerif-Italic.js │ │ │ │ │ ├── SansSerif-Regular.js │ │ │ │ │ ├── Script-Regular.js │ │ │ │ │ ├── Typewriter-Regular.js │ │ │ │ │ ├── fontdata-extra.js │ │ │ │ │ └── fontdata.js │ │ │ └── jax.js │ │ │ └── HTML-CSS │ │ │ ├── autoload │ │ │ ├── annotation-xml.js │ │ │ ├── maction.js │ │ │ ├── menclose.js │ │ │ ├── mglyph.js │ │ │ ├── mmultiscripts.js │ │ │ ├── ms.js │ │ │ ├── mtable.js │ │ │ └── multiline.js │ │ │ ├── config.js │ │ │ ├── fonts │ │ │ └── TeX │ │ │ │ ├── AMS │ │ │ │ └── Regular │ │ │ │ │ ├── Arrows.js │ │ │ │ │ ├── BBBold.js │ │ │ │ │ ├── BoxDrawing.js │ │ │ │ │ ├── CombDiacritMarks.js │ │ │ │ │ ├── Dingbats.js │ │ │ │ │ ├── EnclosedAlphanum.js │ │ │ │ │ ├── GeneralPunctuation.js │ │ │ │ │ ├── GeometricShapes.js │ │ │ │ │ ├── GreekAndCoptic.js │ │ │ │ │ ├── Latin1Supplement.js │ │ │ │ │ ├── LatinExtendedA.js │ │ │ │ │ ├── LetterlikeSymbols.js │ │ │ │ │ ├── Main.js │ │ │ │ │ ├── MathOperators.js │ │ │ │ │ ├── MiscMathSymbolsB.js │ │ │ │ │ ├── MiscSymbols.js │ │ │ │ │ ├── MiscTechnical.js │ │ │ │ │ ├── PUA.js │ │ │ │ │ ├── SpacingModLetters.js │ │ │ │ │ └── SuppMathOperators.js │ │ │ │ ├── Caligraphic │ │ │ │ ├── Bold │ │ │ │ │ └── Main.js │ │ │ │ └── Regular │ │ │ │ │ └── Main.js │ │ │ │ ├── Fraktur │ │ │ │ ├── Bold │ │ │ │ │ ├── BasicLatin.js │ │ │ │ │ ├── Main.js │ │ │ │ │ ├── Other.js │ │ │ │ │ └── PUA.js │ │ │ │ └── Regular │ │ │ │ │ ├── BasicLatin.js │ │ │ │ │ ├── Main.js │ │ │ │ │ ├── Other.js │ │ │ │ │ └── PUA.js │ │ │ │ ├── Greek │ │ │ │ ├── Bold │ │ │ │ │ └── Main.js │ │ │ │ ├── BoldItalic │ │ │ │ │ └── Main.js │ │ │ │ ├── Italic │ │ │ │ │ └── Main.js │ │ │ │ └── Regular │ │ │ │ │ └── Main.js │ │ │ │ ├── Main │ │ │ │ ├── Bold │ │ │ │ │ ├── Arrows.js │ │ │ │ │ ├── CombDiacritMarks.js │ │ │ │ │ ├── CombDiactForSymbols.js │ │ │ │ │ ├── GeneralPunctuation.js │ │ │ │ │ ├── GeometricShapes.js │ │ │ │ │ ├── Latin1Supplement.js │ │ │ │ │ ├── LatinExtendedA.js │ │ │ │ │ ├── LatinExtendedB.js │ │ │ │ │ ├── LetterlikeSymbols.js │ │ │ │ │ ├── Main.js │ │ │ │ │ ├── MathOperators.js │ │ │ │ │ ├── MiscMathSymbolsA.js │ │ │ │ │ ├── MiscSymbols.js │ │ │ │ │ ├── MiscTechnical.js │ │ │ │ │ ├── SpacingModLetters.js │ │ │ │ │ ├── SuppMathOperators.js │ │ │ │ │ └── SupplementalArrowsA.js │ │ │ │ ├── Italic │ │ │ │ │ ├── CombDiacritMarks.js │ │ │ │ │ ├── GeneralPunctuation.js │ │ │ │ │ ├── Latin1Supplement.js │ │ │ │ │ ├── LetterlikeSymbols.js │ │ │ │ │ └── Main.js │ │ │ │ └── Regular │ │ │ │ │ ├── CombDiacritMarks.js │ │ │ │ │ ├── GeometricShapes.js │ │ │ │ │ ├── Main.js │ │ │ │ │ ├── MiscSymbols.js │ │ │ │ │ └── SpacingModLetters.js │ │ │ │ ├── Math │ │ │ │ ├── BoldItalic │ │ │ │ │ └── Main.js │ │ │ │ └── Italic │ │ │ │ │ └── Main.js │ │ │ │ ├── SansSerif │ │ │ │ ├── Bold │ │ │ │ │ ├── BasicLatin.js │ │ │ │ │ ├── CombDiacritMarks.js │ │ │ │ │ ├── Main.js │ │ │ │ │ └── Other.js │ │ │ │ ├── Italic │ │ │ │ │ ├── BasicLatin.js │ │ │ │ │ ├── CombDiacritMarks.js │ │ │ │ │ ├── Main.js │ │ │ │ │ └── Other.js │ │ │ │ └── Regular │ │ │ │ │ ├── BasicLatin.js │ │ │ │ │ ├── CombDiacritMarks.js │ │ │ │ │ ├── Main.js │ │ │ │ │ └── Other.js │ │ │ │ ├── Script │ │ │ │ └── Regular │ │ │ │ │ ├── BasicLatin.js │ │ │ │ │ ├── Main.js │ │ │ │ │ └── Other.js │ │ │ │ ├── Size1 │ │ │ │ └── Regular │ │ │ │ │ └── Main.js │ │ │ │ ├── Size2 │ │ │ │ └── Regular │ │ │ │ │ └── Main.js │ │ │ │ ├── Size3 │ │ │ │ └── Regular │ │ │ │ │ └── Main.js │ │ │ │ ├── Size4 │ │ │ │ └── Regular │ │ │ │ │ └── Main.js │ │ │ │ ├── Typewriter │ │ │ │ └── Regular │ │ │ │ │ ├── BasicLatin.js │ │ │ │ │ ├── CombDiacritMarks.js │ │ │ │ │ ├── Main.js │ │ │ │ │ └── Other.js │ │ │ │ ├── WinChrome │ │ │ │ └── Regular │ │ │ │ │ └── Main.js │ │ │ │ ├── WinIE6 │ │ │ │ └── Regular │ │ │ │ │ ├── AMS.js │ │ │ │ │ ├── Bold.js │ │ │ │ │ └── Main.js │ │ │ │ ├── fontdata-extra.js │ │ │ │ └── fontdata.js │ │ │ ├── imageFonts.js │ │ │ └── jax.js │ │ └── plot.js ├── designer │ ├── about.ui │ ├── addcards.ui │ ├── addfield.ui │ ├── addmodel.ui │ ├── addonconf.ui │ ├── addons.ui │ ├── browser.ui │ ├── browserdisp.ui │ ├── browseropts.ui │ ├── changemap.ui │ ├── changemodel.ui │ ├── clayout_top.ui │ ├── customstudy.ui │ ├── dconf.ui │ ├── debug.ui │ ├── dyndconf.ui │ ├── editaddon.ui │ ├── editcurrent.ui │ ├── edithtml.ui │ ├── emptycards.ui │ ├── exporting.ui │ ├── fields.ui │ ├── finddupes.ui │ ├── findreplace.ui │ ├── getaddons.ui │ ├── icons.qrc │ ├── icons │ │ ├── anki.png │ │ ├── collection.svg │ │ ├── deck.svg │ │ ├── heart.svg │ │ ├── media-record.png │ │ ├── notetype.svg │ │ └── tag.svg │ ├── importing.ui │ ├── main.ui │ ├── modelopts.ui │ ├── models.ui │ ├── preferences.ui │ ├── preview.ui │ ├── profiles.ui │ ├── progress.ui │ ├── reposition.ui │ ├── reschedule.ui │ ├── setgroup.ui │ ├── setlang.ui │ ├── stats.ui │ ├── studydeck.ui │ ├── synclog.ui │ ├── taglimit.ui │ └── template.ui ├── ftl │ ├── .gitignore │ ├── addons.ftl │ ├── errors.ftl │ ├── preferences.ftl │ ├── profiles.ftl │ └── scripts │ │ ├── fetch-latest-translations │ │ └── upload-latest-templates ├── mypy.ini ├── pkgkey.asc ├── po │ ├── .gitignore │ ├── plurals.json │ ├── requirements.txt │ └── scripts │ │ ├── build-mo-files │ │ ├── copy-qt-files │ │ ├── duplicate-string.py │ │ ├── extract-po-string.py │ │ ├── extract-po-strings.py │ │ ├── fetch-latest-translations │ │ ├── update-po-template │ │ └── upload-latest-template ├── pyproject.toml ├── requirements.dev ├── requirements.qt ├── runanki ├── setup.py ├── tests │ ├── FILES.md │ ├── __init__.py │ ├── test_addons.py │ └── test_i18n.py ├── tools │ ├── anki-wait.bat │ ├── build_ui.sh │ ├── extract_scss_colors.py │ ├── genhooks_gui.py │ ├── runanki.system.in │ └── typecheck-setup.sh └── ts │ ├── .prettierrc │ ├── package-lock.json │ ├── package.json │ ├── scss │ ├── _buttons.scss │ ├── _card_counts.scss │ ├── _vars.scss │ ├── deckbrowser.scss │ ├── editor.scss │ ├── overview.scss │ ├── reviewer-bottom.scss │ ├── reviewer.scss │ ├── toolbar-bottom.scss │ ├── toolbar.scss │ └── webview.scss │ ├── src │ ├── deckbrowser.ts │ ├── editor.ts │ ├── overview.ts │ ├── reviewer-bottom.ts │ ├── reviewer.ts │ ├── toolbar.ts │ ├── types │ │ └── global.d.ts │ └── webview.ts │ └── tsconfig.json ├── rslib ├── .gitignore ├── Cargo.toml ├── FILES.md ├── Makefile ├── README.md ├── build.rs ├── ftl │ ├── .gitignore │ ├── FILES.md │ ├── card-template-rendering.ftl │ ├── card-templates.ftl │ ├── database-check.ftl │ ├── deck-config.ftl │ ├── empty-cards.ftl │ ├── filtering.ftl │ ├── findreplace.ftl │ ├── importing.ftl │ ├── media-check.ftl │ ├── network.ftl │ ├── notetypes.ftl │ ├── scheduling.ftl │ ├── scripts │ │ ├── fetch-latest-translations │ │ └── upload-latest-templates │ ├── search.ftl │ ├── statistics.ftl │ └── sync.ftl ├── rust-toolchain ├── rustfmt.toml ├── src │ ├── backend │ │ ├── dbproxy.rs │ │ └── mod.rs │ ├── card.rs │ ├── cloze.rs │ ├── collection.rs │ ├── config.rs │ ├── dbcheck.rs │ ├── deckconf │ │ ├── mod.rs │ │ └── schema11.rs │ ├── decks │ │ ├── counts.rs │ │ ├── mod.rs │ │ ├── schema11.rs │ │ └── tree.rs │ ├── err.rs │ ├── findreplace.rs │ ├── i18n │ │ ├── .gitignore │ │ ├── ftl │ │ │ └── .gitignore │ │ └── mod.rs │ ├── latex.rs │ ├── lib.rs │ ├── log.rs │ ├── media │ │ ├── changetracker.rs │ │ ├── check.rs │ │ ├── database.rs │ │ ├── files.rs │ │ ├── mod.rs │ │ ├── schema.sql │ │ └── sync.rs │ ├── notes.rs │ ├── notetype │ │ ├── cardgen.rs │ │ ├── emptycards.rs │ │ ├── fields.rs │ │ ├── header.tex │ │ ├── mod.rs │ │ ├── render.rs │ │ ├── schema11.rs │ │ ├── schemachange.rs │ │ ├── stock.rs │ │ ├── styling.css │ │ └── templates.rs │ ├── preferences.rs │ ├── prelude.rs │ ├── revlog.rs │ ├── sched │ │ ├── cutoff.rs │ │ ├── mod.rs │ │ └── timespan.rs │ ├── search │ │ ├── cards.rs │ │ ├── deck_order.sql │ │ ├── mod.rs │ │ ├── notes.rs │ │ ├── notetype_order.sql │ │ ├── parser.rs │ │ ├── sqlwriter.rs │ │ └── template_order.sql │ ├── serde.rs │ ├── storage │ │ ├── card │ │ │ ├── add_card.sql │ │ │ ├── add_or_update.sql │ │ │ ├── fix_due_new.sql │ │ │ ├── fix_due_other.sql │ │ │ ├── fix_ivl.sql │ │ │ ├── fix_odue.sql │ │ │ ├── get_card.sql │ │ │ ├── mod.rs │ │ │ └── update_card.sql │ │ ├── config │ │ │ ├── add.sql │ │ │ ├── get.sql │ │ │ └── mod.rs │ │ ├── deck │ │ │ ├── alloc_id.sql │ │ │ ├── cards_for_deck.sql │ │ │ ├── due_counts.sql │ │ │ ├── get_deck.sql │ │ │ ├── missing-decks.sql │ │ │ ├── mod.rs │ │ │ └── update_deck.sql │ │ ├── deckconf │ │ │ ├── add.sql │ │ │ ├── add_or_update.sql │ │ │ ├── get.sql │ │ │ ├── mod.rs │ │ │ └── update.sql │ │ ├── graves │ │ │ ├── add.sql │ │ │ └── mod.rs │ │ ├── mod.rs │ │ ├── note │ │ │ ├── add.sql │ │ │ ├── add_or_update.sql │ │ │ ├── get.sql │ │ │ ├── is_orphaned.sql │ │ │ ├── mod.rs │ │ │ └── update.sql │ │ ├── notetype │ │ │ ├── add_notetype.sql │ │ │ ├── add_or_update.sql │ │ │ ├── delete_cards_for_template.sql │ │ │ ├── existing_cards.sql │ │ │ ├── field_names_for_notes.sql │ │ │ ├── get_fields.sql │ │ │ ├── get_notetype.sql │ │ │ ├── get_notetype_names.sql │ │ │ ├── get_templates.sql │ │ │ ├── get_use_counts.sql │ │ │ ├── mod.rs │ │ │ ├── update_fields.sql │ │ │ ├── update_notetype_config.sql │ │ │ ├── update_notetype_core.sql │ │ │ └── update_templates.sql │ │ ├── revlog │ │ │ ├── add.sql │ │ │ ├── fix_props.sql │ │ │ ├── get.sql │ │ │ └── mod.rs │ │ ├── schema11.sql │ │ ├── sqlite.rs │ │ ├── sync.rs │ │ ├── sync_check.rs │ │ ├── tag │ │ │ ├── add.sql │ │ │ └── mod.rs │ │ └── upgrades │ │ │ ├── mod.rs │ │ │ ├── schema11_downgrade.sql │ │ │ ├── schema14_upgrade.sql │ │ │ └── schema15_upgrade.sql │ ├── sync │ │ ├── http_client.rs │ │ └── mod.rs │ ├── tags.rs │ ├── template.rs │ ├── template_filters.rs │ ├── text.rs │ ├── timestamp.rs │ ├── types.rs │ ├── undo.rs │ └── version.rs └── tests │ └── support │ ├── ftl │ ├── ja │ │ └── test.ftl │ └── templates │ │ └── test.ftl │ └── mediacheck.anki2 ├── rspy ├── .cargo │ └── config ├── .gitignore ├── Cargo.toml ├── FILES.md ├── Makefile ├── README.md ├── requirements.txt ├── rust-toolchain └── src │ └── lib.rs ├── run └── scripts └── rename /.gitattributes: -------------------------------------------------------------------------------- 1 | *.ftl eol=lf 2 | -------------------------------------------------------------------------------- /.github/scripts/contrib.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -eu -o pipefail ${SHELLFLAGS} 4 | 5 | antispam=", at the domain " 6 | 7 | echo "All contributors:" 8 | git log --pretty=format:' - %ae' CONTRIBUTORS |sort |uniq |sort -f | sed "s/@/$antispam/" 9 | 10 | headAuthor=$(git log -1 --pretty=format:'%ae') 11 | authorAt=$(echo "$headAuthor" | sed "s/@/$antispam/") 12 | if git log --pretty=format:'%ae' CONTRIBUTORS | grep -i "$headAuthor" > /dev/null; then 13 | echo "Author $authorAt found in CONTRIBUTORS" 14 | else 15 | echo "Author $authorAt NOT found in list" 16 | exit 1 17 | fi 18 | -------------------------------------------------------------------------------- /.github/scripts/trailing-newlines.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -eu -o pipefail ${SHELLFLAGS} 4 | 5 | # Checking version to force it fail the build if rg is not installed. 6 | # Because `set -e` does not work inside the subshell $() 7 | if ! rg --version > /dev/null 2>&1; 8 | then 9 | echo "Error: ripgrep is not installed!"; 10 | exit 1; 11 | fi; 12 | 13 | files=$(rg -l '[^\n]\z' -g '!*.{png,svg,scss,json,sql}' || true) 14 | 15 | if [ "$files" != "" ]; then 16 | echo "the following files are missing a newline on the last line:" 17 | echo $files 18 | exit 1 19 | fi 20 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.mo 2 | *.pyc 3 | *\# 4 | *~ 5 | .*.swp 6 | .build 7 | .coverage 8 | .DS_Store 9 | dist 10 | pyenv 11 | .mypy_cache 12 | __pycache__ 13 | anki.prof 14 | qt/aqt/forms 15 | locale 16 | tools/runanki.system 17 | /tests/test_sched.py 18 | aqt/buildhash.py 19 | /__main__.py 20 | anki/buildhash.py 21 | .mypy_cache 22 | .pytype 23 | .build 24 | *autosave 25 | tests/support/TEST/backups 26 | /anki 27 | /aqt 28 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | This repo contains all the code for the computer version of Anki. 2 | 3 | :warning: The master branch is currently in alpha. Please see 4 | https://betas.ankiweb.net/#/ 5 | 6 | If you'd like to try development builds of Anki but don't feel comfortable 7 | building the code, please see 8 | https://anki.tenderapp.com/discussions/beta-testing 9 | 10 | For more information on building, please see [README.development](README.development). 11 | 12 | If you'd like to contribute code, please see [README.contributing](README.contributing). 13 | 14 | [![](../../workflows/Checks/badge.svg)](../../actions) 15 | -------------------------------------------------------------------------------- /README.name: -------------------------------------------------------------------------------- 1 | Note that some names are distinct in the manual and in the code. 2 | 3 | Code |Manual 4 | ---------------------------- 5 | cramming deck |Dynamic deck 6 | filtered deck |Dynamic deck 7 | model |note type 8 | template |card type 9 | conf/dconf |deck option 10 | 11 | Note that "template" sometime also design the front or back of the card type 12 | -------------------------------------------------------------------------------- /VARS.md: -------------------------------------------------------------------------------- 1 | Variable |Object of class 2 | ------------------------------------ 3 | col |Collection 4 | mm |Model Managers 5 | mw |Main window 6 | b |browser 7 | FOOid |Identifier of an object of type foo 8 | n |note 9 | c |card 10 | m |model (note type) 11 | d |deck 12 | pm |profile manager 13 | -------------------------------------------------------------------------------- /documentation/links.md: -------------------------------------------------------------------------------- 1 | Here are link to other nice documentation I found. 2 | 3 | # Anki droid 4 | Ankidroid has a nice wiki, explaining many things. Not always up to 5 | date. If I find some informations which fits in this wiki, I'll write 6 | it in their wiki instead of this folder. 7 | 8 | In particular, they document most of the database structure, even if 9 | some parts are still not clear. 10 | 11 | https://github.com/ankidroid/Anki-Android/wiki/Database-Structure 12 | -------------------------------------------------------------------------------- /documentation/preview.md: -------------------------------------------------------------------------------- 1 | # Here are the rules governing previewing card: 2 | 3 | You can preview cards. There are two kinds of previewing. As far as I 4 | know, the difference is not explained anyone yet. 5 | 6 | ## Normal previewing 7 | The first kind of previewing allow you to see the result of applying a 8 | template to a cards. This is what you obtain when you click on the 9 | button `Cards...` if you are viewing a card already created (i.e. in 10 | the browser or in the Edit window). It is also what you obtain when 11 | you click on preview in the browser, and when you actually review a 12 | card. 13 | 14 | ## Filled previewing 15 | When you click on the button `Cards...` from the Add window, ord 16 | from the Note Type manager, you enter this mode. In this mode, every 17 | fields are filled. Either by the actual content of the card you are 18 | created, or by the name of the field parenthesis. 19 | 20 | It means that you can not test the result when some fields are missing 21 | using this window, because the content of `{{^foo}}...{{#foo}}` 22 | will never be displayed. 23 | -------------------------------------------------------------------------------- /meta/.gitignore: -------------------------------------------------------------------------------- 1 | buildhash 2 | -------------------------------------------------------------------------------- /meta/version: -------------------------------------------------------------------------------- 1 | 2.1.28 2 | -------------------------------------------------------------------------------- /proto/.gitignore: -------------------------------------------------------------------------------- 1 | fluent.proto 2 | 3 | -------------------------------------------------------------------------------- /pylib/.gitignore: -------------------------------------------------------------------------------- 1 | *.mo 2 | *.pyc 3 | *\# 4 | *~ 5 | .*.swp 6 | .build 7 | .coverage 8 | .DS_Store 9 | .mypy_cache 10 | .pytype 11 | __pycache__ 12 | anki.egg-info 13 | anki/backend_pb2.* 14 | anki/fluent_pb2.* 15 | anki/rsbackend_gen.py 16 | anki/buildhash.py 17 | build 18 | dist 19 | -------------------------------------------------------------------------------- /pylib/.isort.cfg: -------------------------------------------------------------------------------- 1 | [settings] 2 | skip=aqt/forms,backend_pb2.py,backend_pb2.pyi,fluent_pb2.py,fluent_pb2.pyi,rsbackend_gen.py 3 | multi_line_output=3 4 | include_trailing_comma=True 5 | force_grid_wrap=0 6 | use_parentheses=True 7 | line_length=88 8 | ensure_newline_before_comments=true 9 | -------------------------------------------------------------------------------- /pylib/.pylintrc: -------------------------------------------------------------------------------- 1 | [MASTER] 2 | ignore-patterns=.*_pb2.* 3 | 4 | [MESSAGES CONTROL] 5 | disable=C,R, 6 | fixme, 7 | unused-wildcard-import, 8 | attribute-defined-outside-init, 9 | redefined-builtin, 10 | wildcard-import, 11 | broad-except, 12 | bare-except, 13 | unused-argument, 14 | unused-variable, 15 | redefined-outer-name, 16 | global-statement, 17 | protected-access, 18 | arguments-differ, 19 | -------------------------------------------------------------------------------- /pylib/FILES.md: -------------------------------------------------------------------------------- 1 | As the file with [same name in parent directory](../FILES.md), this 2 | document contains a succint description of the content of each file 3 | from this folder. 4 | 5 | This folder contains all codes used for the python part of anki. It 6 | contains both the source code, and a `build` directory containing the 7 | result of the compilation. 8 | 9 | # anki 10 | This subfolder used to be named `/anki` and be at top level. It 11 | contains all of the back-end code run by anki. 12 | 13 | # .isort.cfg 14 | Configuration for the program isort. Stating how to sort imports in 15 | the code. 16 | 17 | # Makefile 18 | This makefile is called by top level makefile to deal with the back 19 | end specifically. 20 | 21 | # requirements.dev 22 | 23 | Requirements that should be found by make/(virtual env?) to be able to 24 | execute the back-end code. 25 | 26 | # tests 27 | Tests for the backend specifically 28 | 29 | # tools 30 | Tools used to compile this code into the actual code used in the 31 | background. 32 | 33 | -------------------------------------------------------------------------------- /pylib/anki/.gitignore: -------------------------------------------------------------------------------- 1 | buildinfo.py 2 | -------------------------------------------------------------------------------- /pylib/anki/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright: Ankitects Pty Ltd and contributors 2 | # License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html 3 | 4 | import sys 5 | 6 | from anki.buildinfo import version 7 | from anki.collection import Collection 8 | 9 | if sys.version_info[0] < 3 or sys.version_info[1] < 7: 10 | raise Exception("Anki requires Python 3.7+") 11 | 12 | if sys.getfilesystemencoding().lower() in ("ascii", "ansi_x3.4-1968"): 13 | raise Exception("Anki requires a UTF-8 locale.") 14 | 15 | 16 | __all__ = ["Collection"] 17 | -------------------------------------------------------------------------------- /pylib/anki/errors.py: -------------------------------------------------------------------------------- 1 | # Copyright: Ankitects Pty Ltd and contributors 2 | # License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html 3 | 4 | from typing import Any 5 | 6 | 7 | class AnkiError(Exception): 8 | def __init__(self, type, **data) -> None: 9 | super().__init__() 10 | self.type = type 11 | self.data = data 12 | 13 | def __str__(self) -> Any: 14 | type = self.type 15 | if self.data: 16 | type += ": %s" % repr(self.data) 17 | return type 18 | 19 | 20 | class DeckRenameError(Exception): 21 | def __init__(self, description: str) -> None: 22 | super().__init__() 23 | self.description = description 24 | 25 | def __str__(self): 26 | return "Couldn't rename deck: " + self.description 27 | -------------------------------------------------------------------------------- /pylib/anki/importing/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright: Ankitects Pty Ltd and contributors 2 | # License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html 3 | 4 | from anki.importing.anki2 import Anki2Importer 5 | from anki.importing.apkg import AnkiPackageImporter 6 | from anki.importing.csvfile import TextImporter 7 | from anki.importing.mnemo import MnemosyneImporter 8 | from anki.importing.pauker import PaukerImporter 9 | from anki.importing.supermemo_xml import SupermemoXmlImporter # type: ignore 10 | from anki.lang import _ 11 | 12 | Importers = ( 13 | (_("Text separated by tabs or semicolons (*)"), TextImporter), 14 | (_("Packaged Anki Deck/Collection (*.apkg *.colpkg *.zip)"), AnkiPackageImporter), 15 | (_("Mnemosyne 2.0 Deck (*.db)"), MnemosyneImporter), 16 | (_("Supermemo XML export (*.xml)"), SupermemoXmlImporter), 17 | (_("Pauker 1.8 Lesson (*.pau.gz)"), PaukerImporter), 18 | ) 19 | """Used by the file system window, to ensure that it knows which kind of file to search for. And then which importer to use to import the file.""" 20 | -------------------------------------------------------------------------------- /pylib/anki/importing/base.py: -------------------------------------------------------------------------------- 1 | # Copyright: Ankitects Pty Ltd and contributors 2 | # License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html 3 | 4 | from typing import Any, List, Optional 5 | 6 | from anki.collection import Collection 7 | from anki.utils import maxID 8 | 9 | # Base importer 10 | ########################################################################## 11 | 12 | 13 | class Importer: 14 | 15 | needMapper = False 16 | needDelimiter = False 17 | dst: Optional[Collection] 18 | 19 | def __init__(self, col: Collection, file: str) -> None: 20 | self.file = file 21 | self.log: List[str] = [] 22 | self.col = col.weakref() 23 | self.total = 0 24 | self.dst = None 25 | 26 | def run(self) -> None: 27 | pass 28 | 29 | # Timestamps 30 | ###################################################################### 31 | # It's too inefficient to check for existing ids on every object, 32 | # and a previous import may have created timestamps in the future, so we 33 | # need to make sure our starting point is safe. 34 | 35 | def _prepareTS(self) -> None: 36 | self._ts = maxID(self.dst.db) 37 | 38 | def ts(self) -> Any: 39 | self._ts += 1 40 | return self._ts 41 | -------------------------------------------------------------------------------- /pylib/anki/py.typed: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Arthur-Milchior/anki/9e752b4c03dafc5173eb3474a14ed141be56d5fd/pylib/anki/py.typed -------------------------------------------------------------------------------- /pylib/anki/sound.py: -------------------------------------------------------------------------------- 1 | # Copyright: Ankitects Pty Ltd and contributors 2 | # License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html 3 | 4 | """ 5 | Sound/TTS references extracted from card text. 6 | 7 | These can be accessed via eg card.question_av_tags() 8 | """ 9 | 10 | from __future__ import annotations 11 | 12 | import re 13 | from dataclasses import dataclass 14 | from typing import List, Union 15 | 16 | 17 | @dataclass 18 | class TTSTag: 19 | """Records information about a text to speech tag. 20 | 21 | See tts.py for more information. 22 | """ 23 | 24 | field_text: str 25 | lang: str 26 | voices: List[str] 27 | speed: float 28 | # each arg should be in the form 'foo=bar' 29 | other_args: List[str] 30 | 31 | 32 | @dataclass 33 | class SoundOrVideoTag: 34 | """Contains the filename inside a [sound:...] tag. 35 | 36 | Video files also use [sound:...]. 37 | """ 38 | 39 | filename: str 40 | 41 | 42 | # note this does not include image tags, which are handled with HTML. 43 | AVTag = Union[SoundOrVideoTag, TTSTag] 44 | 45 | AV_REF_RE = re.compile(r"\[anki:(play:(.):(\d+))\]") 46 | 47 | 48 | def strip_av_refs(text: str) -> str: 49 | return AV_REF_RE.sub("", text) 50 | -------------------------------------------------------------------------------- /pylib/anki/statsbg.py: -------------------------------------------------------------------------------- 1 | # from subtlepatterns.com; CC BY-SA 3.0. 2 | # by Daniel Beaton 3 | # https://www.toptal.com/designers/subtlepatterns/fancy-deboss/ 4 | bg = """\ 5 | iVBORw0KGgoAAAANSUhEUgAAABIAAAANCAMAAACTkM4rAAAAM1BMVEXy8vLz8/P5+fn19fXt7e329vb4+Pj09PTv7+/u7u739/fw8PD7+/vx8fHr6+v6+vrs7Oz2LjW2AAAAkUlEQVR42g3KyXHAQAwDQYAQj12ItvOP1qqZZwMMPVnd06XToQvz4L2HDQ2iRgkvA7yPPB+JD+OUPnfzZ0JNZh6kkQus5NUmR7g4Jpxv5XN6nYWNmtlq9o3zuK6w3XRsE1pQIEGPIsdtTP3m2cYwlPv6MbL8/QASsKppZefyDmJPbxvxa/NrX1TJ1yp20fhj9D+SiAWWLU8myQAAAABJRU5ErkJggg== 6 | """ 7 | -------------------------------------------------------------------------------- /pylib/anki/storage.py: -------------------------------------------------------------------------------- 1 | # Copyright: Ankitects Pty Ltd and contributors 2 | # License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html 3 | 4 | # Legacy code expects to find Collection in this module. 5 | 6 | from anki.collection import Collection 7 | 8 | _Collection = Collection 9 | -------------------------------------------------------------------------------- /pylib/anki/sync.py: -------------------------------------------------------------------------------- 1 | # Copyright: Ankitects Pty Ltd and contributors 2 | # License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html 3 | 4 | from .httpclient import HttpClient 5 | 6 | AnkiRequestsClient = HttpClient 7 | 8 | 9 | class Syncer: 10 | def sync(self) -> str: 11 | pass 12 | -------------------------------------------------------------------------------- /pylib/anki/types.py: -------------------------------------------------------------------------------- 1 | import enum 2 | from typing import Any, NoReturn 3 | 4 | 5 | class _Impossible(enum.Enum): 6 | pass 7 | 8 | 9 | def assert_impossible(arg: NoReturn) -> NoReturn: 10 | raise Exception(f"unexpected arg received: {type(arg)} {arg}") 11 | 12 | 13 | # mypy is not yet smart enough to do exhaustiveness checking on literal types, 14 | # so this will fail at runtime instead of typecheck time :-( 15 | def assert_impossible_literal(arg: Any) -> NoReturn: 16 | raise Exception(f"unexpected arg received: {type(arg)} {arg}") 17 | -------------------------------------------------------------------------------- /pylib/mypy.ini: -------------------------------------------------------------------------------- 1 | [mypy] 2 | python_version = 3.7 3 | pretty = false 4 | no_strict_optional = true 5 | show_error_codes = true 6 | check_untyped_defs = true 7 | disallow_untyped_decorators = True 8 | warn_redundant_casts = True 9 | warn_unused_configs = True 10 | 11 | [mypy-win32file] 12 | ignore_missing_imports = True 13 | [mypy-win32pipe] 14 | ignore_missing_imports = True 15 | [mypy-pywintypes] 16 | ignore_missing_imports = True 17 | [mypy-winerror] 18 | ignore_missing_imports = True 19 | [mypy-distro] 20 | ignore_missing_imports = True 21 | [mypy-pyaudio] 22 | ignore_missing_imports = True 23 | [mypy-win32api] 24 | ignore_missing_imports = True 25 | [mypy-xml.dom] 26 | ignore_missing_imports = True 27 | [mypy-psutil] 28 | ignore_missing_imports = True 29 | [mypy-bs4] 30 | ignore_missing_imports = True 31 | [mypy-ankirspy] 32 | ignore_missing_imports = True 33 | [mypy-stringcase] 34 | ignore_missing_imports = True 35 | -------------------------------------------------------------------------------- /pylib/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | # Minimum requirements for the build system to execute. 3 | # https://stackoverflow.com/questions/48048745/setup-py-require-a-recent-version-of-setuptools-before-trying-to-install 4 | requires = ["setuptools", "wheel"] 5 | -------------------------------------------------------------------------------- /pylib/requirements.dev: -------------------------------------------------------------------------------- 1 | wheel 2 | mypy 3 | mypy_protobuf>=1.21 4 | black 5 | pytest 6 | # fixme: when isort 5.0 is released, switch to pypi 7 | git+https://github.com/ankitects/isort#egg=isort 8 | # fixme: when pylint supports isort 5.0, switch to pypi 9 | git+https://github.com/ankitects/pylint#egg=pylint 10 | stringcase==1.2.0 11 | -------------------------------------------------------------------------------- /pylib/setup.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | # -*- coding: utf-8 -*- 3 | import os 4 | 5 | import setuptools 6 | 7 | install_requires = [ 8 | "beautifulsoup4", 9 | "requests[socks]", 10 | "decorator", 11 | "protobuf", 12 | 'orjson; platform_machine == "x86_64"', 13 | 'psutil; sys_platform == "win32"', 14 | 'distro; sys_platform != "darwin" and sys_platform != "win32"', 15 | ] 16 | 17 | # maturin develop hides the package from pip - https://github.com/ankitects/anki/pull/600 18 | if not os.environ.get("SKIP_ANKI_RSPY", False): 19 | install_requires.append("ankirspy==2.1.28") # automatically updated 1 20 | 21 | setuptools.setup( 22 | name="anki", 23 | version="2.1.28", # automatically updated 2 24 | author="Ankitects Pty Ltd", 25 | description="Anki's library code", 26 | long_description="Anki's library code", 27 | long_description_content_type="text/markdown", 28 | url="https://apps.ankiweb.net", 29 | packages=setuptools.find_packages(".", exclude=["tests"]), 30 | license="License :: OSI Approved :: GNU Affero General Public License v3 or later (AGPLv3+)", 31 | package_data={"anki": ["py.typed"]}, 32 | classifiers=[], 33 | python_requires=">=3.7", 34 | install_requires=install_requires, 35 | ) 36 | -------------------------------------------------------------------------------- /pylib/tests/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Arthur-Milchior/anki/9e752b4c03dafc5173eb3474a14ed141be56d5fd/pylib/tests/__init__.py -------------------------------------------------------------------------------- /pylib/tests/support/anki12-broken.anki: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Arthur-Milchior/anki/9e752b4c03dafc5173eb3474a14ed141be56d5fd/pylib/tests/support/anki12-broken.anki -------------------------------------------------------------------------------- /pylib/tests/support/anki12-due.anki: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Arthur-Milchior/anki/9e752b4c03dafc5173eb3474a14ed141be56d5fd/pylib/tests/support/anki12-due.anki -------------------------------------------------------------------------------- /pylib/tests/support/anki12.anki: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Arthur-Milchior/anki/9e752b4c03dafc5173eb3474a14ed141be56d5fd/pylib/tests/support/anki12.anki -------------------------------------------------------------------------------- /pylib/tests/support/anki2-alpha.anki2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Arthur-Milchior/anki/9e752b4c03dafc5173eb3474a14ed141be56d5fd/pylib/tests/support/anki2-alpha.anki2 -------------------------------------------------------------------------------- /pylib/tests/support/diffmodels1.anki: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Arthur-Milchior/anki/9e752b4c03dafc5173eb3474a14ed141be56d5fd/pylib/tests/support/diffmodels1.anki -------------------------------------------------------------------------------- /pylib/tests/support/diffmodels2-1.apkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Arthur-Milchior/anki/9e752b4c03dafc5173eb3474a14ed141be56d5fd/pylib/tests/support/diffmodels2-1.apkg -------------------------------------------------------------------------------- /pylib/tests/support/diffmodels2-2.apkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Arthur-Milchior/anki/9e752b4c03dafc5173eb3474a14ed141be56d5fd/pylib/tests/support/diffmodels2-2.apkg -------------------------------------------------------------------------------- /pylib/tests/support/diffmodels2.anki: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Arthur-Milchior/anki/9e752b4c03dafc5173eb3474a14ed141be56d5fd/pylib/tests/support/diffmodels2.anki -------------------------------------------------------------------------------- /pylib/tests/support/diffmodeltemplates-1.apkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Arthur-Milchior/anki/9e752b4c03dafc5173eb3474a14ed141be56d5fd/pylib/tests/support/diffmodeltemplates-1.apkg -------------------------------------------------------------------------------- /pylib/tests/support/diffmodeltemplates-2.apkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Arthur-Milchior/anki/9e752b4c03dafc5173eb3474a14ed141be56d5fd/pylib/tests/support/diffmodeltemplates-2.apkg -------------------------------------------------------------------------------- /pylib/tests/support/fake.png: -------------------------------------------------------------------------------- 1 | abc 2 | -------------------------------------------------------------------------------- /pylib/tests/support/invalid-ords.anki: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Arthur-Milchior/anki/9e752b4c03dafc5173eb3474a14ed141be56d5fd/pylib/tests/support/invalid-ords.anki -------------------------------------------------------------------------------- /pylib/tests/support/media.apkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Arthur-Milchior/anki/9e752b4c03dafc5173eb3474a14ed141be56d5fd/pylib/tests/support/media.apkg -------------------------------------------------------------------------------- /pylib/tests/support/mnemo.db: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Arthur-Milchior/anki/9e752b4c03dafc5173eb3474a14ed141be56d5fd/pylib/tests/support/mnemo.db -------------------------------------------------------------------------------- /pylib/tests/support/suspended12.anki: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Arthur-Milchior/anki/9e752b4c03dafc5173eb3474a14ed141be56d5fd/pylib/tests/support/suspended12.anki -------------------------------------------------------------------------------- /pylib/tests/support/text-2fields.txt: -------------------------------------------------------------------------------- 1 | # this is a test file 2 | 食べる to eat 3 | 飲む to drink 4 | テスト test 5 | to eat 食べる 6 | 飲む to drink 7 | 多すぎる too many fields 8 | not, enough, fields 9 | 遊ぶ 10 | to play 11 | -------------------------------------------------------------------------------- /pylib/tests/support/text-tags.txt: -------------------------------------------------------------------------------- 1 | foo bar baz,qux 2 | foo2 bar2 baz2 3 | -------------------------------------------------------------------------------- /pylib/tests/support/text-update.txt: -------------------------------------------------------------------------------- 1 | 1 x 2 | -------------------------------------------------------------------------------- /pylib/tests/support/update1.apkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Arthur-Milchior/anki/9e752b4c03dafc5173eb3474a14ed141be56d5fd/pylib/tests/support/update1.apkg -------------------------------------------------------------------------------- /pylib/tests/support/update2.apkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Arthur-Milchior/anki/9e752b4c03dafc5173eb3474a14ed141be56d5fd/pylib/tests/support/update2.apkg -------------------------------------------------------------------------------- /pylib/tests/test_flags.py: -------------------------------------------------------------------------------- 1 | from tests.shared import getEmptyCol 2 | 3 | 4 | def test_flags(): 5 | col = getEmptyCol() 6 | n = col.newNote() 7 | n["Front"] = "one" 8 | n["Back"] = "two" 9 | cnt = col.addNote(n) 10 | c = n.cards()[0] 11 | # make sure higher bits are preserved 12 | origBits = 0b101 << 3 13 | c.flags = origBits 14 | c.flush() 15 | # no flags to start with 16 | assert c.userFlag() == 0 17 | assert len(col.findCards("flag:0")) == 1 18 | assert len(col.findCards("flag:1")) == 0 19 | # set flag 2 20 | col.setUserFlag(2, [c.id]) 21 | c.load() 22 | assert c.userFlag() == 2 23 | assert c.flags & origBits == origBits 24 | assert len(col.findCards("flag:0")) == 0 25 | assert len(col.findCards("flag:2")) == 1 26 | assert len(col.findCards("flag:3")) == 0 27 | # change to 3 28 | col.setUserFlag(3, [c.id]) 29 | c.load() 30 | assert c.userFlag() == 3 31 | # unset 32 | col.setUserFlag(0, [c.id]) 33 | c.load() 34 | assert c.userFlag() == 0 35 | 36 | # should work with Cards method as well 37 | c.setUserFlag(2) 38 | assert c.userFlag() == 2 39 | c.setUserFlag(3) 40 | assert c.userFlag() == 3 41 | c.setUserFlag(0) 42 | assert c.userFlag() == 0 43 | -------------------------------------------------------------------------------- /pylib/tests/test_stats.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | # -*- coding: UTF-8 -*- 3 | 4 | import os 5 | import tempfile 6 | 7 | from tests.shared import getEmptyCol 8 | 9 | 10 | def test_stats(): 11 | d = getEmptyCol() 12 | f = d.newNote() 13 | f["Front"] = "foo" 14 | d.addNote(f) 15 | c = f.cards()[0] 16 | # card stats 17 | assert d.cardStats(c) 18 | d.reset() 19 | c = d.sched.getCard() 20 | d.sched.answerCard(c, 3) 21 | d.sched.answerCard(c, 2) 22 | assert d.cardStats(c) 23 | 24 | 25 | def test_graphs_empty(): 26 | d = getEmptyCol() 27 | assert d.stats().report() 28 | 29 | 30 | def test_graphs(): 31 | dir = tempfile.gettempdir() 32 | d = getEmptyCol() 33 | g = d.stats() 34 | rep = g.report() 35 | with open(os.path.join(dir, "test.html"), "w", encoding="UTF-8") as f: 36 | f.write(rep) 37 | return 38 | -------------------------------------------------------------------------------- /pylib/tests/test_template.py: -------------------------------------------------------------------------------- 1 | from tests.shared import getEmptyCol 2 | 3 | 4 | def test_deferred_frontside(): 5 | d = getEmptyCol() 6 | m = d.models.current() 7 | m["tmpls"][0]["qfmt"] = "{{custom:Front}}" 8 | d.models.save(m) 9 | 10 | f = d.newNote() 11 | f["Front"] = "xxtest" 12 | f["Back"] = "" 13 | d.addNote(f) 14 | 15 | assert "xxtest" in f.cards()[0].a() 16 | -------------------------------------------------------------------------------- /pylib/tools/FILES.md: -------------------------------------------------------------------------------- 1 | As the file with [same name in parent directory](../FILES.md), this 2 | document contains a succint description of the content of each file 3 | from this folder. 4 | 5 | This directory contains tools used to create Anki's executable. It 6 | does not contain code directly executed in Anki. In particular, it 7 | contains the [list of hooks](hookslib.py), which gets compiled to the 8 | [actual code used in anki](../anki/hooks.py). 9 | 10 | The [diff sched](diff-sched.py) file deals with the difference between 11 | both schedulers. 12 | -------------------------------------------------------------------------------- /pylib/tools/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Arthur-Milchior/anki/9e752b4c03dafc5173eb3474a14ed141be56d5fd/pylib/tools/__init__.py -------------------------------------------------------------------------------- /pylib/tools/diff-sched.py: -------------------------------------------------------------------------------- 1 | # a quick script to compare methods in the two schedulers 2 | 3 | import inspect 4 | from anki.sched import Scheduler as S1 5 | from anki.schedv2 import Scheduler as S2 6 | from difflib import SequenceMatcher, unified_diff 7 | import sys 8 | 9 | s1map = {} 10 | for k, v in S1.__dict__.items(): 11 | if not callable(v): 12 | continue 13 | s1map[k] = v 14 | 15 | s2map = {} 16 | for k, v in S2.__dict__.items(): 17 | if not callable(v): 18 | continue 19 | s2map[k] = v 20 | 21 | for k, v in s1map.items(): 22 | if k not in s2map: 23 | continue 24 | 25 | s1b = inspect.getsource(v) 26 | s2b = inspect.getsource(s2map[k]) 27 | ratio = SequenceMatcher(None, s1b, s2b).ratio() 28 | 29 | if ratio >= 0.90: 30 | print("*" * 80) 31 | print(k, "%d%%" % (ratio * 100)) 32 | sys.stdout.writelines( 33 | "\n".join(unified_diff(s1b.splitlines(), s2b.splitlines(), lineterm="")) 34 | ) 35 | print() 36 | -------------------------------------------------------------------------------- /qt/.gitignore: -------------------------------------------------------------------------------- 1 | *.mo 2 | *.pyc 3 | *\# 4 | *~ 5 | .*.swp 6 | .build 7 | .coverage 8 | .DS_Store 9 | .mypy_cache 10 | .pytype 11 | __pycache__ 12 | aqt/forms 13 | tools/runanki.system 14 | ts/node_modules 15 | aqt_data/locale 16 | aqt_data/web/deckbrowser.js 17 | aqt_data/web/editor.js 18 | aqt_data/web/overview.js 19 | aqt_data/web/reviewer-bottom.js 20 | aqt_data/web/reviewer.js 21 | aqt_data/web/webview.js 22 | aqt_data/web/toolbar.js 23 | dist 24 | aqt.egg-info 25 | build 26 | i18n/anki.pot 27 | -------------------------------------------------------------------------------- /qt/.isort.cfg: -------------------------------------------------------------------------------- 1 | [settings] 2 | skip=aqt/forms,anki/backend_pb2.py,backend_pb2.pyi 3 | multi_line_output=3 4 | include_trailing_comma=True 5 | force_grid_wrap=0 6 | use_parentheses=True 7 | line_length=88 8 | ensure_newline_before_comments=true 9 | known_first_party=anki 10 | -------------------------------------------------------------------------------- /qt/.pylintrc: -------------------------------------------------------------------------------- 1 | [MESSAGES CONTROL] 2 | disable=C,R, 3 | fixme, 4 | unused-wildcard-import, 5 | attribute-defined-outside-init, 6 | redefined-builtin, 7 | wildcard-import, 8 | broad-except, 9 | bare-except, 10 | unused-argument, 11 | unused-variable, 12 | redefined-outer-name, 13 | global-statement, 14 | protected-access, 15 | arguments-differ, 16 | -------------------------------------------------------------------------------- /qt/FILES.md: -------------------------------------------------------------------------------- 1 | As the file with [same name in parent directory](../FILES.md), this 2 | document contains a succint description of the content of each file 3 | from this folder. 4 | 5 | This folder deal with all of the front end of anki. Contrary to what 6 | its name suggest, it does not contains only code which deal with qt. 7 | 8 | # designer 9 | This subfolder contains Qt Creator files, used to generate the 10 | front-end windows. 11 | 12 | # aqt 13 | This file contains all front-end code dealing with the windows created 14 | in designer. It also contains code to direcetly generate a few form windows. 15 | 16 | # ts 17 | Contains all of the files related to the "web" part of the 18 | back-end. Contrary to its name, it does not only contains typescript, 19 | but also html, css. 20 | 21 | # aqt_data 22 | Contains some web related library (mathjax, jquery, jquery-ui... ) 23 | 24 | # ftl 25 | Contains English version of String displayed to users. It currently 26 | only contains most recent strings, as most string as directly in the 27 | code. 28 | 29 | # polib 30 | Files related to the [polib library](https://pypi.org/project/polib/), 31 | related to translation. 32 | 33 | # tests 34 | Contains tests related to the back-end. Currently related to add-ons 35 | and translations 36 | 37 | # tools 38 | Contains tools used to compile back-end code into something that can 39 | be executed in anki. 40 | -------------------------------------------------------------------------------- /qt/anki.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Name=Anki 3 | Comment=An intelligent spaced-repetition memory training program 4 | GenericName=Flashcards 5 | Exec=anki %f 6 | TryExec=anki 7 | Icon=anki 8 | Categories=Education;Languages;KDE;Qt; 9 | Terminal=false 10 | Type=Application 11 | Version=1.0 12 | MimeType=application/x-apkg;application/x-anki;application/x-ankiaddon; 13 | -------------------------------------------------------------------------------- /qt/anki.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Arthur-Milchior/anki/9e752b4c03dafc5173eb3474a14ed141be56d5fd/qt/anki.png -------------------------------------------------------------------------------- /qt/anki.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Anki 2.1 collection package 6 | 7 | 8 | 9 | 10 | Anki 2.0 deck package 11 | 12 | 13 | 14 | 15 | Anki 2.1 add-on package 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /qt/aqt/.gitignore: -------------------------------------------------------------------------------- 1 | buildinfo.py 2 | colors.py 3 | -------------------------------------------------------------------------------- /qt/aqt/pinnedmodules.py: -------------------------------------------------------------------------------- 1 | # Copyright: Ankitects Pty Ltd and contributors 2 | # License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html 3 | 4 | # this file is imported as part of the bundling process to ensure certain 5 | # modules are included in the distribution 6 | 7 | # pylint: disable=import-error,unused-import 8 | 9 | # included implicitly in the past, and relied upon by some add-ons 10 | import cgi 11 | import decimal 12 | 13 | # useful for add-ons 14 | import logging 15 | import logging.config 16 | import logging.handlers 17 | 18 | # required by requests library 19 | import queue 20 | import typing 21 | import uuid 22 | 23 | # included implicitly in the past, and relied upon by some add-ons 24 | import PyQt5.QtSvg 25 | import socks 26 | 27 | # legacy compat 28 | import anki.storage 29 | import anki.sync 30 | from anki.utils import isLin, isWin 31 | 32 | # included implicitly in the past, and relied upon by some add-ons 33 | 34 | 35 | # external module access in Windows 36 | if isWin: 37 | import pythoncom 38 | import win32com 39 | import pywintypes 40 | 41 | if isLin: 42 | import fcntl 43 | -------------------------------------------------------------------------------- /qt/aqt/py.typed: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Arthur-Milchior/anki/9e752b4c03dafc5173eb3474a14ed141be56d5fd/qt/aqt/py.typed -------------------------------------------------------------------------------- /qt/aqt/schema_change_tracker.py: -------------------------------------------------------------------------------- 1 | # Copyright: Ankitects Pty Ltd and contributors 2 | # License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html 3 | 4 | from __future__ import annotations 5 | 6 | import enum 7 | 8 | from aqt import AnkiQt 9 | 10 | 11 | class Change(enum.Enum): 12 | NO_CHANGE = 0 13 | BASIC_CHANGE = 1 14 | SCHEMA_CHANGE = 2 15 | 16 | 17 | class ChangeTracker: 18 | _changed = Change.NO_CHANGE 19 | 20 | def __init__(self, mw: AnkiQt): 21 | self.mw = mw 22 | 23 | def mark_basic(self): 24 | if self._changed == Change.NO_CHANGE: 25 | self._changed = Change.BASIC_CHANGE 26 | 27 | def mark_schema(self) -> bool: 28 | "If false, processing should be aborted." 29 | if self._changed != Change.SCHEMA_CHANGE: 30 | if not self.mw.confirm_schema_modification(): 31 | return False 32 | self._changed = Change.SCHEMA_CHANGE 33 | return True 34 | 35 | def changed(self) -> bool: 36 | return self._changed != Change.NO_CHANGE 37 | -------------------------------------------------------------------------------- /qt/aqt_data/web/.gitignore: -------------------------------------------------------------------------------- 1 | *.css 2 | 3 | -------------------------------------------------------------------------------- /qt/aqt_data/web/browsersel.js: -------------------------------------------------------------------------------- 1 | /* CSS Browser Selector v0.4.0 (Nov 02, 2010) Rafael Lima (http://rafael.adm.br). CC BY 2.5. */function css_browser_selector(u){var ua=u.toLowerCase(),is=function(t){return ua.indexOf(t)>-1},g='gecko',w='webkit',s='safari',o='opera',m='mobile',h=document.documentElement,b=[(!(/opera|webtv/i.test(ua))&&/msie\s(\d)/.test(ua))?('ie ie'+RegExp.$1):is('firefox/2')?g+' ff2':is('firefox/3.5')?g+' ff3 ff3_5':is('firefox/3.6')?g+' ff3 ff3_6':is('firefox/3')?g+' ff3':is('gecko/')?g:is('opera')?o+(/version\/(\d+)/.test(ua)?' '+o+RegExp.$1:(/opera(\s|\/)(\d+)/.test(ua)?' '+o+RegExp.$2:'')):is('konqueror')?'konqueror':is('blackberry')?m+' blackberry':is('android')?m+' android':is('chrome')?w+' chrome':is('iron')?w+' iron':is('applewebkit/')?w+' '+s+(/version\/(\d+)/.test(ua)?' '+s+RegExp.$1:''):is('mozilla/')?g:'',is('j2me')?m+' j2me':is('iphone')?m+' iphone':is('ipod')?m+' ipod':is('ipad')?m+' ipad':is('mac')?'mac':is('darwin')?'mac':is('webtv')?'webtv':is('win')?'win'+(is('windows nt 6.0')?' vista':''):is('freebsd')?'freebsd':(is('x11')||is('linux'))?'linux':'','js']; c = b.join(' '); h.className += ' '+c; return c;}; css_browser_selector(navigator.userAgent); 2 | -------------------------------------------------------------------------------- /qt/aqt_data/web/imgs/anki-logo-thin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Arthur-Milchior/anki/9e752b4c03dafc5173eb3474a14ed141be56d5fd/qt/aqt_data/web/imgs/anki-logo-thin.png -------------------------------------------------------------------------------- /qt/aqt_data/web/imgs/media-record.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Arthur-Milchior/anki/9e752b4c03dafc5173eb3474a14ed141be56d5fd/qt/aqt_data/web/imgs/media-record.png -------------------------------------------------------------------------------- /qt/aqt_data/web/imgs/more.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Arthur-Milchior/anki/9e752b4c03dafc5173eb3474a14ed141be56d5fd/qt/aqt_data/web/imgs/more.png -------------------------------------------------------------------------------- /qt/aqt_data/web/imgs/paperclip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Arthur-Milchior/anki/9e752b4c03dafc5173eb3474a14ed141be56d5fd/qt/aqt_data/web/imgs/paperclip.png -------------------------------------------------------------------------------- /qt/aqt_data/web/imgs/refresh.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /qt/aqt_data/web/imgs/text_bold.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Arthur-Milchior/anki/9e752b4c03dafc5173eb3474a14ed141be56d5fd/qt/aqt_data/web/imgs/text_bold.png -------------------------------------------------------------------------------- /qt/aqt_data/web/imgs/text_clear.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Arthur-Milchior/anki/9e752b4c03dafc5173eb3474a14ed141be56d5fd/qt/aqt_data/web/imgs/text_clear.png -------------------------------------------------------------------------------- /qt/aqt_data/web/imgs/text_cloze.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Arthur-Milchior/anki/9e752b4c03dafc5173eb3474a14ed141be56d5fd/qt/aqt_data/web/imgs/text_cloze.png -------------------------------------------------------------------------------- /qt/aqt_data/web/imgs/text_italic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Arthur-Milchior/anki/9e752b4c03dafc5173eb3474a14ed141be56d5fd/qt/aqt_data/web/imgs/text_italic.png -------------------------------------------------------------------------------- /qt/aqt_data/web/imgs/text_sub.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Arthur-Milchior/anki/9e752b4c03dafc5173eb3474a14ed141be56d5fd/qt/aqt_data/web/imgs/text_sub.png -------------------------------------------------------------------------------- /qt/aqt_data/web/imgs/text_super.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Arthur-Milchior/anki/9e752b4c03dafc5173eb3474a14ed141be56d5fd/qt/aqt_data/web/imgs/text_super.png -------------------------------------------------------------------------------- /qt/aqt_data/web/imgs/text_under.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Arthur-Milchior/anki/9e752b4c03dafc5173eb3474a14ed141be56d5fd/qt/aqt_data/web/imgs/text_under.png -------------------------------------------------------------------------------- /qt/aqt_data/web/mathjax/conf.js: -------------------------------------------------------------------------------- 1 | window.MathJax = { 2 | jax: ["input/TeX", "output/CommonHTML"], 3 | extensions: ["tex2jax.js"], 4 | TeX: { 5 | extensions: ["AMSmath.js", "AMSsymbols.js", "noErrors.js", "noUndefined.js", "mhchem.js"] 6 | }, 7 | tex2jax: { 8 | displayMath: [["\\[", "\\]"]], 9 | processRefs: false, 10 | processEnvironments: false, 11 | }, 12 | messageStyle: "none", 13 | skipStartupTypeset: true, 14 | showMathMenu: false, 15 | AuthorInit: function () { 16 | MathJax.Hub.processSectionDelay = 0; 17 | MathJax.Hub.processUpdateTime = 0; 18 | MathJax.Hub.processUpdateDelay = 0; 19 | } 20 | }; 21 | -------------------------------------------------------------------------------- /qt/aqt_data/web/mathjax/extensions/HTML-CSS/handle-floats.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/extensions/HTML-CSS/handle-floats.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.Extension["HTML-CSS/handle-floats"]={version:"2.7.1"};MathJax.Hub.Startup.signal.Post("HTML-CSS handle-floats Ready");MathJax.Ajax.loadComplete("[MathJax]/extensions/HTML-CSS/handle-floats.js"); 20 | -------------------------------------------------------------------------------- /qt/aqt_data/web/mathjax/extensions/TeX/autobold.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/extensions/TeX/autobold.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.Extension["TeX/autobold"]={version:"2.7.1"};MathJax.Hub.Register.StartupHook("TeX Jax Ready",function(){var a=MathJax.InputJax.TeX;a.prefilterHooks.Add(function(d){var c=d.script.parentNode.insertBefore(document.createElement("span"),d.script);c.visibility="hidden";c.style.fontFamily="Times, serif";c.appendChild(document.createTextNode("ABCXYZabcxyz"));var b=c.offsetWidth;c.style.fontWeight="bold";if(b&&c.offsetWidth===b){d.math="\\boldsymbol{"+d.math+"}"}c.parentNode.removeChild(c)});MathJax.Hub.Startup.signal.Post("TeX autobold Ready")});MathJax.Ajax.loadComplete("[MathJax]/extensions/TeX/autobold.js"); 20 | -------------------------------------------------------------------------------- /qt/aqt_data/web/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_AMS-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Arthur-Milchior/anki/9e752b4c03dafc5173eb3474a14ed141be56d5fd/qt/aqt_data/web/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_AMS-Regular.woff -------------------------------------------------------------------------------- /qt/aqt_data/web/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Caligraphic-Bold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Arthur-Milchior/anki/9e752b4c03dafc5173eb3474a14ed141be56d5fd/qt/aqt_data/web/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Caligraphic-Bold.woff -------------------------------------------------------------------------------- /qt/aqt_data/web/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Caligraphic-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Arthur-Milchior/anki/9e752b4c03dafc5173eb3474a14ed141be56d5fd/qt/aqt_data/web/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Caligraphic-Regular.woff -------------------------------------------------------------------------------- /qt/aqt_data/web/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Fraktur-Bold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Arthur-Milchior/anki/9e752b4c03dafc5173eb3474a14ed141be56d5fd/qt/aqt_data/web/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Fraktur-Bold.woff -------------------------------------------------------------------------------- /qt/aqt_data/web/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Fraktur-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Arthur-Milchior/anki/9e752b4c03dafc5173eb3474a14ed141be56d5fd/qt/aqt_data/web/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Fraktur-Regular.woff -------------------------------------------------------------------------------- /qt/aqt_data/web/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Main-Bold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Arthur-Milchior/anki/9e752b4c03dafc5173eb3474a14ed141be56d5fd/qt/aqt_data/web/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Main-Bold.woff -------------------------------------------------------------------------------- /qt/aqt_data/web/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Main-Italic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Arthur-Milchior/anki/9e752b4c03dafc5173eb3474a14ed141be56d5fd/qt/aqt_data/web/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Main-Italic.woff -------------------------------------------------------------------------------- /qt/aqt_data/web/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Main-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Arthur-Milchior/anki/9e752b4c03dafc5173eb3474a14ed141be56d5fd/qt/aqt_data/web/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Main-Regular.woff -------------------------------------------------------------------------------- /qt/aqt_data/web/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Math-BoldItalic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Arthur-Milchior/anki/9e752b4c03dafc5173eb3474a14ed141be56d5fd/qt/aqt_data/web/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Math-BoldItalic.woff -------------------------------------------------------------------------------- /qt/aqt_data/web/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Math-Italic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Arthur-Milchior/anki/9e752b4c03dafc5173eb3474a14ed141be56d5fd/qt/aqt_data/web/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Math-Italic.woff -------------------------------------------------------------------------------- /qt/aqt_data/web/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Math-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Arthur-Milchior/anki/9e752b4c03dafc5173eb3474a14ed141be56d5fd/qt/aqt_data/web/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Math-Regular.woff -------------------------------------------------------------------------------- /qt/aqt_data/web/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_SansSerif-Bold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Arthur-Milchior/anki/9e752b4c03dafc5173eb3474a14ed141be56d5fd/qt/aqt_data/web/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_SansSerif-Bold.woff -------------------------------------------------------------------------------- /qt/aqt_data/web/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_SansSerif-Italic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Arthur-Milchior/anki/9e752b4c03dafc5173eb3474a14ed141be56d5fd/qt/aqt_data/web/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_SansSerif-Italic.woff -------------------------------------------------------------------------------- /qt/aqt_data/web/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_SansSerif-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Arthur-Milchior/anki/9e752b4c03dafc5173eb3474a14ed141be56d5fd/qt/aqt_data/web/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_SansSerif-Regular.woff -------------------------------------------------------------------------------- /qt/aqt_data/web/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Script-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Arthur-Milchior/anki/9e752b4c03dafc5173eb3474a14ed141be56d5fd/qt/aqt_data/web/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Script-Regular.woff -------------------------------------------------------------------------------- /qt/aqt_data/web/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Size1-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Arthur-Milchior/anki/9e752b4c03dafc5173eb3474a14ed141be56d5fd/qt/aqt_data/web/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Size1-Regular.woff -------------------------------------------------------------------------------- /qt/aqt_data/web/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Size2-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Arthur-Milchior/anki/9e752b4c03dafc5173eb3474a14ed141be56d5fd/qt/aqt_data/web/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Size2-Regular.woff -------------------------------------------------------------------------------- /qt/aqt_data/web/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Size3-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Arthur-Milchior/anki/9e752b4c03dafc5173eb3474a14ed141be56d5fd/qt/aqt_data/web/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Size3-Regular.woff -------------------------------------------------------------------------------- /qt/aqt_data/web/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Size4-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Arthur-Milchior/anki/9e752b4c03dafc5173eb3474a14ed141be56d5fd/qt/aqt_data/web/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Size4-Regular.woff -------------------------------------------------------------------------------- /qt/aqt_data/web/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Typewriter-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Arthur-Milchior/anki/9e752b4c03dafc5173eb3474a14ed141be56d5fd/qt/aqt_data/web/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Typewriter-Regular.woff -------------------------------------------------------------------------------- /qt/aqt_data/web/mathjax/jax/element/mml/optable/CombDiacritMarks.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/element/mml/optable/CombDiacritMarks.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | (function(a){var c=a.mo.OPTYPES;var b=a.TEXCLASS;MathJax.Hub.Insert(a.mo.prototype,{OPTABLE:{postfix:{"\u0311":c.ACCENT}}});MathJax.Ajax.loadComplete(a.optableDir+"/CombDiacritMarks.js")})(MathJax.ElementJax.mml); 20 | -------------------------------------------------------------------------------- /qt/aqt_data/web/mathjax/jax/element/mml/optable/CombDiactForSymbols.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/element/mml/optable/CombDiactForSymbols.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | (function(a){var c=a.mo.OPTYPES;var b=a.TEXCLASS;MathJax.Hub.Insert(a.mo.prototype,{OPTABLE:{postfix:{"\u20DB":c.ACCENT,"\u20DC":c.ACCENT}}});MathJax.Ajax.loadComplete(a.optableDir+"/CombDiactForSymbols.js")})(MathJax.ElementJax.mml); 20 | -------------------------------------------------------------------------------- /qt/aqt_data/web/mathjax/jax/element/mml/optable/Dingbats.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/element/mml/optable/Dingbats.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | (function(a){var c=a.mo.OPTYPES;var b=a.TEXCLASS;MathJax.Hub.Insert(a.mo.prototype,{OPTABLE:{prefix:{"\u2772":c.OPEN},postfix:{"\u2773":c.CLOSE}}});MathJax.Ajax.loadComplete(a.optableDir+"/Dingbats.js")})(MathJax.ElementJax.mml); 20 | -------------------------------------------------------------------------------- /qt/aqt_data/web/mathjax/jax/element/mml/optable/GeneralPunctuation.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/element/mml/optable/GeneralPunctuation.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | (function(a){var c=a.mo.OPTYPES;var b=a.TEXCLASS;MathJax.Hub.Insert(a.mo.prototype,{OPTABLE:{prefix:{"\u2016":[0,0,b.ORD,{fence:true,stretchy:true}],"\u2018":[0,0,b.OPEN,{fence:true}],"\u201C":[0,0,b.OPEN,{fence:true}]},postfix:{"\u2016":[0,0,b.ORD,{fence:true,stretchy:true}],"\u2019":[0,0,b.CLOSE,{fence:true}],"\u201D":[0,0,b.CLOSE,{fence:true}]}}});MathJax.Ajax.loadComplete(a.optableDir+"/GeneralPunctuation.js")})(MathJax.ElementJax.mml); 20 | -------------------------------------------------------------------------------- /qt/aqt_data/web/mathjax/jax/element/mml/optable/GreekAndCoptic.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/element/mml/optable/GreekAndCoptic.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | (function(a){var c=a.mo.OPTYPES;var b=a.TEXCLASS;MathJax.Hub.Insert(a.mo.prototype,{OPTABLE:{infix:{"\u03F6":c.REL}}});MathJax.Ajax.loadComplete(a.optableDir+"/GreekAndCoptic.js")})(MathJax.ElementJax.mml); 20 | -------------------------------------------------------------------------------- /qt/aqt_data/web/mathjax/jax/element/mml/optable/Latin1Supplement.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/element/mml/optable/Latin1Supplement.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | (function(a){var c=a.mo.OPTYPES;var b=a.TEXCLASS;MathJax.Hub.Insert(a.mo.prototype,{OPTABLE:{postfix:{"\u00B0":c.ORD,"\u00B4":c.ACCENT,"\u00B8":c.ACCENT}}});MathJax.Ajax.loadComplete(a.optableDir+"/Latin1Supplement.js")})(MathJax.ElementJax.mml); 20 | -------------------------------------------------------------------------------- /qt/aqt_data/web/mathjax/jax/element/mml/optable/LetterlikeSymbols.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/element/mml/optable/LetterlikeSymbols.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | (function(a){var c=a.mo.OPTYPES;var b=a.TEXCLASS;MathJax.Hub.Insert(a.mo.prototype,{OPTABLE:{prefix:{"\u2145":c.ORD21,"\u2146":[2,0,b.ORD]}}});MathJax.Ajax.loadComplete(a.optableDir+"/LetterlikeSymbols.js")})(MathJax.ElementJax.mml); 20 | -------------------------------------------------------------------------------- /qt/aqt_data/web/mathjax/jax/element/mml/optable/MiscMathSymbolsA.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/element/mml/optable/MiscMathSymbolsA.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | (function(a){var c=a.mo.OPTYPES;var b=a.TEXCLASS;MathJax.Hub.Insert(a.mo.prototype,{OPTABLE:{prefix:{"\u27E6":c.OPEN,"\u27EA":c.OPEN,"\u27EC":c.OPEN},postfix:{"\u27E7":c.CLOSE,"\u27EB":c.CLOSE,"\u27ED":c.CLOSE}}});MathJax.Ajax.loadComplete(a.optableDir+"/MiscMathSymbolsA.js")})(MathJax.ElementJax.mml); 20 | -------------------------------------------------------------------------------- /qt/aqt_data/web/mathjax/jax/element/mml/optable/MiscSymbolsAndArrows.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/element/mml/optable/MiscSymbolsAndArrows.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | (function(a){var c=a.mo.OPTYPES;var b=a.TEXCLASS;MathJax.Hub.Insert(a.mo.prototype,{OPTABLE:{infix:{"\u2B45":c.RELSTRETCH,"\u2B46":c.RELSTRETCH}}});MathJax.Ajax.loadComplete(a.optableDir+"/MiscSymbolsAndArrows.js")})(MathJax.ElementJax.mml); 20 | -------------------------------------------------------------------------------- /qt/aqt_data/web/mathjax/jax/element/mml/optable/MiscTechnical.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/element/mml/optable/MiscTechnical.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | (function(a){var c=a.mo.OPTYPES;var b=a.TEXCLASS;MathJax.Hub.Insert(a.mo.prototype,{OPTABLE:{postfix:{"\u23B4":c.WIDEACCENT,"\u23B5":c.WIDEACCENT,"\u23DC":c.WIDEACCENT,"\u23DD":c.WIDEACCENT,"\u23E0":c.WIDEACCENT,"\u23E1":c.WIDEACCENT}}});MathJax.Ajax.loadComplete(a.optableDir+"/MiscTechnical.js")})(MathJax.ElementJax.mml); 20 | -------------------------------------------------------------------------------- /qt/aqt_data/web/mathjax/jax/element/mml/optable/SpacingModLetters.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/element/mml/optable/SpacingModLetters.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | (function(a){var c=a.mo.OPTYPES;var b=a.TEXCLASS;MathJax.Hub.Insert(a.mo.prototype,{OPTABLE:{postfix:{"\u02CD":c.WIDEACCENT,"\u02DA":c.ACCENT,"\u02DD":c.ACCENT,"\u02F7":c.WIDEACCENT}}});MathJax.Ajax.loadComplete(a.optableDir+"/SpacingModLetters.js")})(MathJax.ElementJax.mml); 20 | -------------------------------------------------------------------------------- /qt/aqt_data/web/mathjax/jax/element/mml/optable/SupplementalArrowsA.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/element/mml/optable/SupplementalArrowsA.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | (function(a){var c=a.mo.OPTYPES;var b=a.TEXCLASS;MathJax.Hub.Insert(a.mo.prototype,{OPTABLE:{infix:{"\u27F0":c.RELSTRETCH,"\u27F1":c.RELSTRETCH,"\u27FB":c.WIDEREL,"\u27FD":c.WIDEREL,"\u27FE":c.WIDEREL,"\u27FF":c.WIDEREL}}});MathJax.Ajax.loadComplete(a.optableDir+"/SupplementalArrowsA.js")})(MathJax.ElementJax.mml); 20 | -------------------------------------------------------------------------------- /qt/aqt_data/web/mathjax/jax/input/AsciiMath/config.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/input/AsciiMath/config.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.InputJax.AsciiMath=MathJax.InputJax({id:"AsciiMath",version:"2.7.1",directory:MathJax.InputJax.directory+"/AsciiMath",extensionDir:MathJax.InputJax.extensionDir+"/AsciiMath",config:{fixphi:true,useMathMLspacing:true,displaystyle:true,decimalsign:"."}});MathJax.InputJax.AsciiMath.Register("math/asciimath");MathJax.InputJax.AsciiMath.loadComplete("config.js"); 20 | -------------------------------------------------------------------------------- /qt/aqt_data/web/mathjax/jax/input/MathML/config.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/input/MathML/config.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.InputJax.MathML=MathJax.InputJax({id:"MathML",version:"2.7.1",directory:MathJax.InputJax.directory+"/MathML",extensionDir:MathJax.InputJax.extensionDir+"/MathML",entityDir:MathJax.InputJax.directory+"/MathML/entities",config:{useMathMLspacing:false}});MathJax.InputJax.MathML.Register("math/mml");MathJax.InputJax.MathML.loadComplete("config.js"); 20 | -------------------------------------------------------------------------------- /qt/aqt_data/web/mathjax/jax/input/MathML/entities/f.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/input/MathML/entities/f.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | (function(a){MathJax.Hub.Insert(a.Parse.Entity,{Fcy:"\u0424",FilledSmallSquare:"\u25FC",Fouriertrf:"\u2131",fallingdotseq:"\u2252",fcy:"\u0444",female:"\u2640",ffilig:"\uFB03",fflig:"\uFB00",ffllig:"\uFB04",filig:"\uFB01",fjlig:"\u0066\u006A",fllig:"\uFB02",fltns:"\u25B1",fnof:"\u0192",forall:"\u2200",forkv:"\u2AD9",fpartint:"\u2A0D",frac12:"\u00BD",frac13:"\u2153",frac14:"\u00BC",frac15:"\u2155",frac16:"\u2159",frac18:"\u215B",frac23:"\u2154",frac25:"\u2156",frac34:"\u00BE",frac35:"\u2157",frac38:"\u215C",frac45:"\u2158",frac56:"\u215A",frac58:"\u215D",frac78:"\u215E",frasl:"\u2044"});MathJax.Ajax.loadComplete(a.entityDir+"/f.js")})(MathJax.InputJax.MathML); 20 | -------------------------------------------------------------------------------- /qt/aqt_data/web/mathjax/jax/input/MathML/entities/h.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/input/MathML/entities/h.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | (function(a){MathJax.Hub.Insert(a.Parse.Entity,{HARDcy:"\u042A",Hcirc:"\u0124",HilbertSpace:"\u210B",HorizontalLine:"\u2500",Hstrok:"\u0126",hArr:"\u21D4",hairsp:"\u200A",half:"\u00BD",hamilt:"\u210B",hardcy:"\u044A",harr:"\u2194",harrcir:"\u2948",hcirc:"\u0125",hearts:"\u2665",heartsuit:"\u2665",hercon:"\u22B9",hksearow:"\u2925",hkswarow:"\u2926",hoarr:"\u21FF",homtht:"\u223B",horbar:"\u2015",hslash:"\u210F",hstrok:"\u0127",hybull:"\u2043",hyphen:"\u2010"});MathJax.Ajax.loadComplete(a.entityDir+"/h.js")})(MathJax.InputJax.MathML); 20 | -------------------------------------------------------------------------------- /qt/aqt_data/web/mathjax/jax/input/MathML/entities/j.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/input/MathML/entities/j.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | (function(a){MathJax.Hub.Insert(a.Parse.Entity,{Jcirc:"\u0134",Jcy:"\u0419",Jsercy:"\u0408",Jukcy:"\u0404",jcirc:"\u0135",jcy:"\u0439",jsercy:"\u0458",jukcy:"\u0454"});MathJax.Ajax.loadComplete(a.entityDir+"/j.js")})(MathJax.InputJax.MathML); 20 | -------------------------------------------------------------------------------- /qt/aqt_data/web/mathjax/jax/input/MathML/entities/k.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/input/MathML/entities/k.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | (function(a){MathJax.Hub.Insert(a.Parse.Entity,{KHcy:"\u0425",KJcy:"\u040C",Kappa:"\u039A",Kcedil:"\u0136",Kcy:"\u041A",kcedil:"\u0137",kcy:"\u043A",kgreen:"\u0138",khcy:"\u0445",kjcy:"\u045C"});MathJax.Ajax.loadComplete(a.entityDir+"/k.js")})(MathJax.InputJax.MathML); 20 | -------------------------------------------------------------------------------- /qt/aqt_data/web/mathjax/jax/input/MathML/entities/m.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/input/MathML/entities/m.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | (function(a){MathJax.Hub.Insert(a.Parse.Entity,{Map:"\u2905",Mcy:"\u041C",MediumSpace:"\u205F",Mellintrf:"\u2133",Mu:"\u039C",mDDot:"\u223A",male:"\u2642",maltese:"\u2720",map:"\u21A6",mapsto:"\u21A6",mapstodown:"\u21A7",mapstoleft:"\u21A4",mapstoup:"\u21A5",marker:"\u25AE",mcomma:"\u2A29",mcy:"\u043C",mdash:"\u2014",measuredangle:"\u2221",micro:"\u00B5",mid:"\u2223",midast:"\u002A",midcir:"\u2AF0",middot:"\u00B7",minus:"\u2212",minusb:"\u229F",minusd:"\u2238",minusdu:"\u2A2A",mlcp:"\u2ADB",mldr:"\u2026",mnplus:"\u2213",models:"\u22A7",mp:"\u2213",mstpos:"\u223E",mumap:"\u22B8"});MathJax.Ajax.loadComplete(a.entityDir+"/m.js")})(MathJax.InputJax.MathML); 20 | -------------------------------------------------------------------------------- /qt/aqt_data/web/mathjax/jax/input/MathML/entities/q.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/input/MathML/entities/q.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | (function(a){MathJax.Hub.Insert(a.Parse.Entity,{QUOT:"\u0022",qint:"\u2A0C",qprime:"\u2057",quaternions:"\u210D",quatint:"\u2A16",quest:"\u003F",questeq:"\u225F",quot:"\u0022"});MathJax.Ajax.loadComplete(a.entityDir+"/q.js")})(MathJax.InputJax.MathML); 20 | -------------------------------------------------------------------------------- /qt/aqt_data/web/mathjax/jax/input/MathML/entities/w.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/input/MathML/entities/w.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | (function(a){MathJax.Hub.Insert(a.Parse.Entity,{Wcirc:"\u0174",wcirc:"\u0175",wedbar:"\u2A5F",wedge:"\u2227",wedgeq:"\u2259",wp:"\u2118",wr:"\u2240",wreath:"\u2240"});MathJax.Ajax.loadComplete(a.entityDir+"/w.js")})(MathJax.InputJax.MathML); 20 | -------------------------------------------------------------------------------- /qt/aqt_data/web/mathjax/jax/input/MathML/entities/x.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/input/MathML/entities/x.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | (function(a){MathJax.Hub.Insert(a.Parse.Entity,{xcap:"\u22C2",xcirc:"\u25EF",xcup:"\u22C3",xdtri:"\u25BD",xhArr:"\u27FA",xharr:"\u27F7",xlArr:"\u27F8",xlarr:"\u27F5",xmap:"\u27FC",xnis:"\u22FB",xodot:"\u2A00",xoplus:"\u2A01",xotime:"\u2A02",xrArr:"\u27F9",xrarr:"\u27F6",xsqcup:"\u2A06",xuplus:"\u2A04",xutri:"\u25B3",xvee:"\u22C1",xwedge:"\u22C0"});MathJax.Ajax.loadComplete(a.entityDir+"/x.js")})(MathJax.InputJax.MathML); 20 | -------------------------------------------------------------------------------- /qt/aqt_data/web/mathjax/jax/input/MathML/entities/y.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/input/MathML/entities/y.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | (function(a){MathJax.Hub.Insert(a.Parse.Entity,{YAcy:"\u042F",YIcy:"\u0407",YUcy:"\u042E",Yacute:"\u00DD",Ycirc:"\u0176",Ycy:"\u042B",Yuml:"\u0178",yacute:"\u00FD",yacy:"\u044F",ycirc:"\u0177",ycy:"\u044B",yicy:"\u0457",yucy:"\u044E",yuml:"\u00FF"});MathJax.Ajax.loadComplete(a.entityDir+"/y.js")})(MathJax.InputJax.MathML); 20 | -------------------------------------------------------------------------------- /qt/aqt_data/web/mathjax/jax/input/MathML/entities/z.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/input/MathML/entities/z.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | (function(a){MathJax.Hub.Insert(a.Parse.Entity,{ZHcy:"\u0416",Zacute:"\u0179",Zcaron:"\u017D",Zcy:"\u0417",Zdot:"\u017B",ZeroWidthSpace:"\u200B",Zeta:"\u0396",zacute:"\u017A",zcaron:"\u017E",zcy:"\u0437",zdot:"\u017C",zeetrf:"\u2128",zhcy:"\u0436",zwj:"\u200D",zwnj:"\u200C"});MathJax.Ajax.loadComplete(a.entityDir+"/z.js")})(MathJax.InputJax.MathML); 20 | -------------------------------------------------------------------------------- /qt/aqt_data/web/mathjax/jax/input/TeX/config.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/input/TeX/config.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.InputJax.TeX=MathJax.InputJax({id:"TeX",version:"2.7.1",directory:MathJax.InputJax.directory+"/TeX",extensionDir:MathJax.InputJax.extensionDir+"/TeX",config:{TagSide:"right",TagIndent:"0.8em",MultLineWidth:"85%",equationNumbers:{autoNumber:"none",formatNumber:function(a){return a},formatTag:function(a){return"("+a+")"},formatID:function(a){return"mjx-eqn-"+String(a).replace(/[:"'<>&]/g,"")},formatURL:function(b,a){return a+"#"+escape(b)},useLabelIds:true}},resetEquationNumbers:function(){}});MathJax.InputJax.TeX.Register("math/tex");MathJax.InputJax.TeX.loadComplete("config.js"); 20 | -------------------------------------------------------------------------------- /qt/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/BoxDrawing.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/BoxDrawing.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.Hub.Insert(MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS.MathJax_AMS,{9484:[694,-306,500,55,444],9488:[694,-306,500,55,444],9492:[366,22,500,55,444],9496:[366,22,500,55,444],9585:[694,195,889,0,860],9586:[694,195,889,0,860]});MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir+"/AMS/Regular/BoxDrawing.js"); 20 | -------------------------------------------------------------------------------- /qt/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/CombDiacritMarks.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/CombDiacritMarks.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.Hub.Insert(MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS.MathJax_AMS,{770:[845,-561,0,-2347,13],771:[899,-628,0,-2332,-3]});MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir+"/AMS/Regular/CombDiacritMarks.js"); 20 | -------------------------------------------------------------------------------- /qt/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/Dingbats.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/Dingbats.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.Hub.Insert(MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS.MathJax_AMS,{10003:[706,34,833,84,749],10016:[716,22,833,48,786]});MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir+"/AMS/Regular/Dingbats.js"); 20 | -------------------------------------------------------------------------------- /qt/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/EnclosedAlphanum.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/EnclosedAlphanum.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.Hub.Insert(MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS.MathJax_AMS,{9416:[709,175,902,8,894]});MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir+"/AMS/Regular/EnclosedAlphanum.js"); 20 | -------------------------------------------------------------------------------- /qt/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/GeneralPunctuation.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/GeneralPunctuation.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.Hub.Insert(MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS.MathJax_AMS,{8245:[560,-43,275,12,244]});MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir+"/AMS/Regular/GeneralPunctuation.js"); 20 | -------------------------------------------------------------------------------- /qt/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/GeometricShapes.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/GeometricShapes.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.Hub.Insert(MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS.MathJax_AMS,{9632:[689,0,778,55,722],9633:[689,0,778,55,722],9650:[575,20,722,84,637],9651:[575,20,722,84,637],9654:[539,41,778,83,694],9660:[576,19,722,84,637],9661:[576,19,722,84,637],9664:[539,41,778,83,694],9674:[716,132,667,56,611]});MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir+"/AMS/Regular/GeometricShapes.js"); 20 | -------------------------------------------------------------------------------- /qt/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/GreekAndCoptic.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/GreekAndCoptic.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.Hub.Insert(MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS.MathJax_AMS,{989:[605,85,778,55,719],1008:[434,6,667,37,734]});MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir+"/AMS/Regular/GreekAndCoptic.js"); 20 | -------------------------------------------------------------------------------- /qt/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/Latin1Supplement.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/Latin1Supplement.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.Hub.Insert(MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS.MathJax_AMS,{160:[0,0,250,0,0],165:[683,0,750,11,738],174:[709,175,947,32,915],240:[749,21,556,42,509]});MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir+"/AMS/Regular/Latin1Supplement.js"); 20 | -------------------------------------------------------------------------------- /qt/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/LatinExtendedA.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/LatinExtendedA.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.Hub.Insert(MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS.MathJax_AMS,{295:[695,13,540,42,562]});MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir+"/AMS/Regular/LatinExtendedA.js"); 20 | -------------------------------------------------------------------------------- /qt/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/LetterlikeSymbols.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/LetterlikeSymbols.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.Hub.Insert(MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS.MathJax_AMS,{8463:[695,13,540,42,562],8487:[684,22,722,44,675],8498:[695,1,556,55,497],8502:[763,21,667,-22,687],8503:[764,43,444,-22,421],8504:[764,43,667,54,640],8513:[705,23,639,37,577]});MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir+"/AMS/Regular/LetterlikeSymbols.js"); 20 | -------------------------------------------------------------------------------- /qt/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/MiscMathSymbolsB.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/MiscMathSymbolsB.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.Hub.Insert(MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS.MathJax_AMS,{10731:[716,132,667,56,611]});MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir+"/AMS/Regular/MiscMathSymbolsB.js"); 20 | -------------------------------------------------------------------------------- /qt/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/MiscSymbols.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/MiscSymbols.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.Hub.Insert(MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS.MathJax_AMS,{9733:[694,111,944,49,895]});MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir+"/AMS/Regular/MiscSymbols.js"); 20 | -------------------------------------------------------------------------------- /qt/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/MiscTechnical.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/MiscTechnical.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.Hub.Insert(MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS.MathJax_AMS,{8994:[378,-122,778,55,722],8995:[378,-143,778,55,722]});MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir+"/AMS/Regular/MiscTechnical.js"); 20 | -------------------------------------------------------------------------------- /qt/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/PUA.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/PUA.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.Hub.Insert(MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS.MathJax_AMS,{57350:[430,23,222,-20,240],57351:[431,24,389,-20,407],57352:[605,85,778,55,719],57353:[434,6,667,37,734],57356:[752,284,778,82,693],57357:[752,284,778,82,693],57358:[919,421,778,82,694],57359:[801,303,778,82,694],57360:[801,303,778,82,694],57361:[919,421,778,82,694],57366:[828,330,778,82,694],57367:[752,332,778,82,694],57368:[828,330,778,82,694],57369:[752,333,778,82,693],57370:[634,255,778,84,693],57371:[634,254,778,82,691]});MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir+"/AMS/Regular/PUA.js"); 20 | -------------------------------------------------------------------------------- /qt/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/SpacingModLetters.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/SpacingModLetters.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.Hub.Insert(MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS.MathJax_AMS,{710:[845,-561,2333,-14,2346],732:[899,-628,2333,1,2330]});MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir+"/AMS/Regular/SpacingModLetters.js"); 20 | -------------------------------------------------------------------------------- /qt/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Fraktur/Bold/Main.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/HTML-CSS/fonts/TeX/Fraktur/Bold/Main.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS["MathJax_Fraktur-bold"]={directory:"Fraktur/Bold",family:"MathJax_Fraktur",weight:"bold",testString:"MathJax Fraktur",Ranges:[[0,127,"BasicLatin"],[128,57343,"Other"],[58112,58128,"PUA"]]};MathJax.Callback.Queue(["initFont",MathJax.OutputJax["HTML-CSS"],"MathJax_Fraktur-bold"],["loadComplete",MathJax.Ajax,MathJax.OutputJax["HTML-CSS"].fontDir+"/Fraktur/Bold/Main.js"]); 20 | -------------------------------------------------------------------------------- /qt/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Fraktur/Bold/Other.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/HTML-CSS/fonts/TeX/Fraktur/Bold/Other.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.Hub.Insert(MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS["MathJax_Fraktur-bold"],{160:[0,0,250,0,0],8216:[708,-411,254,53,187],8217:[692,-394,254,58,193]});MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir+"/Fraktur/Bold/Other.js"); 20 | -------------------------------------------------------------------------------- /qt/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Fraktur/Bold/PUA.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/HTML-CSS/fonts/TeX/Fraktur/Bold/PUA.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.Hub.Insert(MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS["MathJax_Fraktur-bold"],{58113:[630,27,587,64,512],58114:[693,212,394,37,408],58115:[681,219,387,36,384],58116:[473,212,593,67,531],58117:[684,27,393,33,387],58120:[679,220,981,32,875],58121:[717,137,727,17,633]});MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir+"/Fraktur/Bold/PUA.js"); 20 | -------------------------------------------------------------------------------- /qt/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Fraktur/Regular/Main.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/HTML-CSS/fonts/TeX/Fraktur/Regular/Main.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS.MathJax_Fraktur={directory:"Fraktur/Regular",family:"MathJax_Fraktur",testString:"MathJax Fraktur",Ranges:[[0,127,"BasicLatin"],[128,57343,"Other"],[58112,58128,"PUA"]]};MathJax.Callback.Queue(["initFont",MathJax.OutputJax["HTML-CSS"],"MathJax_Fraktur"],["loadComplete",MathJax.Ajax,MathJax.OutputJax["HTML-CSS"].fontDir+"/Fraktur/Regular/Main.js"]); 20 | -------------------------------------------------------------------------------- /qt/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Fraktur/Regular/Other.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/HTML-CSS/fonts/TeX/Fraktur/Regular/Other.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.Hub.Insert(MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS.MathJax_Fraktur,{160:[0,0,250,0,0],8216:[708,-410,215,45,158],8217:[692,-395,215,49,163]});MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir+"/Fraktur/Regular/Other.js"); 20 | -------------------------------------------------------------------------------- /qt/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Fraktur/Regular/PUA.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/HTML-CSS/fonts/TeX/Fraktur/Regular/PUA.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.Hub.Insert(MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS.MathJax_Fraktur,{58112:[683,32,497,75,430],58113:[616,30,498,35,432],58114:[680,215,333,29,339],58115:[679,224,329,28,318],58116:[471,214,503,52,449],58117:[686,20,333,26,315],58118:[577,21,334,29,347],58119:[475,22,501,10,514]});MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir+"/Fraktur/Regular/PUA.js"); 20 | -------------------------------------------------------------------------------- /qt/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Greek/Bold/Main.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/HTML-CSS/fonts/TeX/Greek/Bold/Main.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS["MathJax_Greek-bold"]={directory:"Greek/Bold",family:"MathJax_Greek",weight:"bold",testString:"\u0393 \u03A5 \u039B",32:[0,0,250,0,0],160:[0,0,250,0,0],915:[680,0,692,39,643],916:[698,0,958,56,901],920:[696,10,894,64,829],923:[698,0,806,40,765],926:[675,0,767,48,718],928:[680,0,900,39,860],931:[686,0,831,64,766],933:[697,0,894,64,829],934:[686,0,831,64,766],936:[686,0,894,64,829],937:[696,1,831,51,779]};MathJax.Callback.Queue(["initFont",MathJax.OutputJax["HTML-CSS"],"MathJax_Greek-bold"],["loadComplete",MathJax.Ajax,MathJax.OutputJax["HTML-CSS"].fontDir+"/Greek/Bold/Main.js"]); 20 | -------------------------------------------------------------------------------- /qt/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Greek/Regular/Main.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/HTML-CSS/fonts/TeX/Greek/Regular/Main.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS.MathJax_Greek={directory:"Greek/Regular",family:"MathJax_Greek",testString:"\u0393 \u03A5 \u039B",32:[0,0,250,0,0],160:[0,0,250,0,0],915:[680,0,625,25,582],916:[716,0,833,46,786],920:[705,22,778,56,722],923:[716,0,694,32,661],926:[677,0,667,42,624],928:[680,0,750,25,724],931:[683,0,722,55,666],933:[705,0,778,55,722],934:[683,0,722,56,665],936:[683,0,778,55,722],937:[704,0,722,44,677]};MathJax.Callback.Queue(["initFont",MathJax.OutputJax["HTML-CSS"],"MathJax_Greek"],["loadComplete",MathJax.Ajax,MathJax.OutputJax["HTML-CSS"].fontDir+"/Greek/Regular/Main.js"]); 20 | -------------------------------------------------------------------------------- /qt/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/CombDiacritMarks.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/CombDiacritMarks.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.Hub.Insert(MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS["MathJax_Main-bold"],{768:[706,-503,0,-461,-237],769:[706,-503,0,-339,-115],770:[694,-520,0,-449,-127],771:[694,-552,0,-479,-97],772:[607,-540,0,-495,-81],774:[694,-500,0,-473,-103],775:[695,-525,0,-373,-203],776:[695,-535,0,-479,-97],778:[702,-536,0,-415,-161],779:[714,-511,0,-442,-82],780:[660,-515,0,-445,-131],824:[711,210,0,-734,-161]});MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir+"/Main/Bold/CombDiacritMarks.js"); 20 | -------------------------------------------------------------------------------- /qt/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/CombDiactForSymbols.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/CombDiactForSymbols.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.Hub.Insert(MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS["MathJax_Main-bold"],{8407:[723,-513,0,-542,-33]});MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir+"/Main/Bold/CombDiactForSymbols.js"); 20 | -------------------------------------------------------------------------------- /qt/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/GeneralPunctuation.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/GeneralPunctuation.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.Hub.Insert(MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS["MathJax_Main-bold"],{8194:[0,0,500,0,0],8195:[0,0,999,0,0],8196:[0,0,333,0,0],8197:[0,0,250,0,0],8198:[0,0,167,0,0],8201:[0,0,167,0,0],8202:[0,0,83,0,0],8211:[300,-249,575,0,574],8212:[300,-249,1150,0,1149],8216:[694,-329,319,58,245],8217:[694,-329,319,74,261],8220:[694,-329,603,110,564],8221:[694,-329,603,38,492],8224:[702,211,511,64,446],8225:[702,202,511,64,446],8230:[171,-1,1295,74,1221],8242:[563,-33,344,35,331]});MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir+"/Main/Bold/GeneralPunctuation.js"); 20 | -------------------------------------------------------------------------------- /qt/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/GeometricShapes.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/GeometricShapes.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.Hub.Insert(MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS["MathJax_Main-bold"],{9651:[711,-1,1022,69,953],9657:[540,39,575,33,542],9661:[500,210,1022,68,953],9667:[539,38,575,33,542],9711:[711,211,1150,65,1084]});MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir+"/Main/Bold/GeometricShapes.js"); 20 | -------------------------------------------------------------------------------- /qt/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/Latin1Supplement.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/Latin1Supplement.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.Hub.Insert(MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS["MathJax_Main-bold"],{160:[0,0,250,0,0],168:[695,-535,575,96,478],172:[371,-61,767,64,702],175:[607,-540,575,80,494],176:[702,-536,575,160,414],177:[728,35,894,64,829],180:[706,-503,575,236,460],215:[530,28,894,168,726],247:[597,96,894,64,828]});MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir+"/Main/Bold/Latin1Supplement.js"); 20 | -------------------------------------------------------------------------------- /qt/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/LatinExtendedA.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/LatinExtendedA.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.Hub.Insert(MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS["MathJax_Main-bold"],{305:[452,8,394,24,367]});MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir+"/Main/Bold/LatinExtendedA.js"); 20 | -------------------------------------------------------------------------------- /qt/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/LatinExtendedB.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/LatinExtendedB.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.Hub.Insert(MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS["MathJax_Main-bold"],{567:[451,201,439,-12,420]});MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir+"/Main/Bold/LatinExtendedB.js"); 20 | -------------------------------------------------------------------------------- /qt/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/LetterlikeSymbols.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/LetterlikeSymbols.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.Hub.Insert(MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS["MathJax_Main-bold"],{8463:[694,8,668,45,642],8465:[702,8,831,64,798],8467:[702,19,474,-1,446],8472:[461,210,740,72,726],8476:[711,16,831,42,824],8501:[694,0,703,64,638]});MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir+"/Main/Bold/LetterlikeSymbols.js"); 20 | -------------------------------------------------------------------------------- /qt/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/MiscMathSymbolsA.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/MiscMathSymbolsA.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.Hub.Insert(MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS["MathJax_Main-bold"],{10216:[750,249,447,127,382],10217:[750,249,447,64,319]});MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir+"/Main/Bold/MiscMathSymbolsA.js"); 20 | -------------------------------------------------------------------------------- /qt/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/MiscSymbols.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/MiscSymbols.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.Hub.Insert(MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS["MathJax_Main-bold"],{9824:[719,129,894,64,829],9825:[711,24,894,65,828],9826:[719,154,894,64,828],9827:[719,129,894,32,861],9837:[750,17,447,64,381],9838:[741,223,447,57,389],9839:[724,224,447,63,382]});MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir+"/Main/Bold/MiscSymbols.js"); 20 | -------------------------------------------------------------------------------- /qt/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/MiscTechnical.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/MiscTechnical.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.Hub.Insert(MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS["MathJax_Main-bold"],{8968:[750,248,511,194,493],8969:[750,248,511,17,317],8970:[749,248,511,194,493],8971:[749,248,511,17,317],8994:[405,-108,1150,65,1084],8995:[392,-126,1150,64,1085]});MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir+"/Main/Bold/MiscTechnical.js"); 20 | -------------------------------------------------------------------------------- /qt/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/SpacingModLetters.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/SpacingModLetters.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.Hub.Insert(MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS["MathJax_Main-bold"],{710:[694,-520,575,126,448],711:[660,-515,575,130,444],713:[607,-540,575,80,494],714:[706,-503,575,236,460],715:[706,-503,575,114,338],728:[694,-500,575,102,472],729:[695,-525,575,202,372],730:[702,-536,575,160,414],732:[694,-552,575,96,478]});MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir+"/Main/Bold/SpacingModLetters.js"); 20 | -------------------------------------------------------------------------------- /qt/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/SuppMathOperators.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/SuppMathOperators.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.Hub.Insert(MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS["MathJax_Main-bold"],{10815:[686,0,900,39,860],10927:[696,199,894,96,797],10928:[697,199,894,96,797]});MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir+"/Main/Bold/SuppMathOperators.js"); 20 | -------------------------------------------------------------------------------- /qt/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/SupplementalArrowsA.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/SupplementalArrowsA.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.Hub.Insert(MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS["MathJax_Main-bold"],{10229:[518,17,1805,64,1741],10230:[518,17,1833,96,1773],10231:[518,17,2126,64,2061],10232:[547,46,1868,64,1804],10233:[547,46,1870,64,1804],10234:[547,46,2126,64,2060],10236:[518,17,1833,65,1773]});MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir+"/Main/Bold/SupplementalArrowsA.js"); 20 | -------------------------------------------------------------------------------- /qt/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Italic/CombDiacritMarks.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/HTML-CSS/fonts/TeX/Main/Italic/CombDiacritMarks.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.Hub.Insert(MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS["MathJax_Main-italic"],{768:[697,-500,0,-222,-74],769:[697,-500,0,-173,39],770:[694,-527,0,-251,17],771:[668,-558,0,-265,60],772:[589,-544,0,-282,54],774:[694,-515,0,-237,62],775:[669,-548,0,-165,-41],776:[669,-554,0,-251,45],778:[716,-542,0,-199,3],779:[697,-503,0,-248,65],780:[638,-502,0,-236,29]});MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir+"/Main/Italic/CombDiacritMarks.js"); 20 | -------------------------------------------------------------------------------- /qt/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Italic/GeneralPunctuation.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/HTML-CSS/fonts/TeX/Main/Italic/GeneralPunctuation.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.Hub.Insert(MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS["MathJax_Main-italic"],{8211:[285,-248,511,91,554],8212:[285,-248,1022,117,1038],8216:[694,-379,307,197,362],8217:[694,-379,307,213,377],8220:[694,-379,514,243,606],8221:[694,-379,514,176,538]});MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir+"/Main/Italic/GeneralPunctuation.js"); 20 | -------------------------------------------------------------------------------- /qt/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Italic/Latin1Supplement.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/HTML-CSS/fonts/TeX/Main/Italic/Latin1Supplement.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.Hub.Insert(MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS["MathJax_Main-italic"],{160:[0,0,250,0,0]});MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir+"/Main/Italic/Latin1Supplement.js"); 20 | -------------------------------------------------------------------------------- /qt/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Italic/LetterlikeSymbols.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/HTML-CSS/fonts/TeX/Main/Italic/LetterlikeSymbols.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.Hub.Insert(MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS["MathJax_Main-italic"],{8463:[695,13,540,42,562]});MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir+"/Main/Italic/LetterlikeSymbols.js"); 20 | -------------------------------------------------------------------------------- /qt/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Regular/CombDiacritMarks.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/HTML-CSS/fonts/TeX/Main/Regular/CombDiacritMarks.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.Hub.Insert(MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS.MathJax_Main,{768:[699,-505,0,-394,-205],769:[699,-505,0,-297,-107],770:[694,-531,0,-388,-113],771:[668,-565,0,-417,-84],772:[590,-544,0,-431,-70],774:[694,-515,0,-408,-93],775:[669,-549,0,-310,-191],776:[669,-554,0,-405,-96],778:[715,-542,0,-353,-148],779:[701,-510,0,-378,-80],780:[644,-513,0,-386,-115],824:[716,215,0,-639,-140]});MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir+"/Main/Regular/CombDiacritMarks.js"); 20 | -------------------------------------------------------------------------------- /qt/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Regular/GeometricShapes.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/HTML-CSS/fonts/TeX/Main/Regular/GeometricShapes.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.Hub.Insert(MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS.MathJax_Main,{9651:[716,0,889,59,828],9657:[505,5,500,26,474],9661:[500,215,889,59,828],9667:[505,5,500,26,473],9711:[715,215,1000,56,944]});MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir+"/Main/Regular/GeometricShapes.js"); 20 | -------------------------------------------------------------------------------- /qt/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Regular/MiscSymbols.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/HTML-CSS/fonts/TeX/Main/Regular/MiscSymbols.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.Hub.Insert(MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS.MathJax_Main,{9824:[727,130,778,55,723],9825:[716,33,778,55,723],9826:[727,162,778,55,723],9827:[726,130,778,28,750],9837:[750,22,389,55,332],9838:[734,223,389,65,324],9839:[723,223,389,55,333]});MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir+"/Main/Regular/MiscSymbols.js"); 20 | -------------------------------------------------------------------------------- /qt/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Regular/SpacingModLetters.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/HTML-CSS/fonts/TeX/Main/Regular/SpacingModLetters.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.Hub.Insert(MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS.MathJax_Main,{730:[715,-542,500,147,352]});MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir+"/Main/Regular/SpacingModLetters.js"); 20 | -------------------------------------------------------------------------------- /qt/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Bold/CombDiacritMarks.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Bold/CombDiacritMarks.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.Hub.Insert(MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS["MathJax_SansSerif-bold"],{768:[694,-537,0,-458,-218],769:[694,-537,0,-334,-93],770:[694,-537,0,-442,-109],771:[694,-548,0,-458,-93],772:[660,-560,0,-474,-77],774:[694,-552,0,-470,-80],775:[695,-596,0,-356,-194],776:[695,-595,0,-459,-91],778:[694,-538,0,-365,-119],779:[694,-537,0,-440,-94],780:[657,-500,0,-442,-109]});MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir+"/SansSerif/Bold/CombDiacritMarks.js"); 20 | -------------------------------------------------------------------------------- /qt/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Bold/Main.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Bold/Main.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS["MathJax_SansSerif-bold"]={directory:"SansSerif/Bold",family:"MathJax_SansSerif",weight:"bold",testString:"MathJax SansSerif ^ _",Ranges:[[0,127,"BasicLatin"],[128,65535,"Other"],[768,879,"CombDiacritMarks"]]};MathJax.Callback.Queue(["initFont",MathJax.OutputJax["HTML-CSS"],"MathJax_SansSerif-bold"],["loadComplete",MathJax.Ajax,MathJax.OutputJax["HTML-CSS"].fontDir+"/SansSerif/Bold/Main.js"]); 20 | -------------------------------------------------------------------------------- /qt/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Italic/CombDiacritMarks.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Italic/CombDiacritMarks.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.Hub.Insert(MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS["MathJax_SansSerif-italic"],{768:[694,-527,0,-270,-87],769:[694,-527,0,-190,63],770:[694,-527,0,-310,33],771:[677,-543,0,-301,60],772:[631,-552,0,-314,64],774:[694,-508,0,-284,73],775:[680,-576,0,-180,-54],776:[680,-582,0,-273,40],778:[693,-527,0,-227,-2],779:[694,-527,0,-287,63],780:[654,-487,0,-283,60]});MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir+"/SansSerif/Italic/CombDiacritMarks.js"); 20 | -------------------------------------------------------------------------------- /qt/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Italic/Main.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Italic/Main.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS["MathJax_SansSerif-italic"]={directory:"SansSerif/Italic",family:"MathJax_SansSerif",style:"italic",testString:"MathJax SansSerif ^ _",Ranges:[[0,127,"BasicLatin"],[128,65535,"Other"],[768,879,"CombDiacritMarks"]]};MathJax.Callback.Queue(["initFont",MathJax.OutputJax["HTML-CSS"],"MathJax_SansSerif-italic"],["loadComplete",MathJax.Ajax,MathJax.OutputJax["HTML-CSS"].fontDir+"/SansSerif/Italic/Main.js"]); 20 | -------------------------------------------------------------------------------- /qt/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Regular/CombDiacritMarks.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Regular/CombDiacritMarks.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.Hub.Insert(MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS.MathJax_SansSerif,{768:[694,-527,0,-417,-199],769:[694,-527,0,-302,-84],770:[694,-527,0,-422,-79],771:[677,-543,0,-417,-84],772:[631,-552,0,-431,-70],774:[694,-508,0,-427,-74],775:[680,-576,0,-302,-198],776:[680,-582,0,-397,-104],778:[694,-527,0,-319,-99],779:[694,-527,0,-399,-84],780:[654,-487,0,-422,-79]});MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir+"/SansSerif/Regular/CombDiacritMarks.js"); 20 | -------------------------------------------------------------------------------- /qt/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Regular/Main.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Regular/Main.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS.MathJax_SansSerif={directory:"SansSerif/Regular",family:"MathJax_SansSerif",testString:"MathJax SansSerif ^ _",Ranges:[[0,127,"BasicLatin"],[128,65535,"Other"],[768,879,"CombDiacritMarks"]]};MathJax.Callback.Queue(["initFont",MathJax.OutputJax["HTML-CSS"],"MathJax_SansSerif"],["loadComplete",MathJax.Ajax,MathJax.OutputJax["HTML-CSS"].fontDir+"/SansSerif/Regular/Main.js"]); 20 | -------------------------------------------------------------------------------- /qt/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Script/Regular/Main.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/HTML-CSS/fonts/TeX/Script/Regular/Main.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS.MathJax_Script={directory:"Script/Regular",family:"MathJax_Script",testString:"MATHJAX SCRIPT",skew:{65:0.389,66:0.194,67:0.278,68:0.111,69:0.139,70:0.222,71:0.25,72:0.333,73:0.333,74:0.417,75:0.361,76:0.306,77:0.444,78:0.389,79:0.167,80:0.222,81:0.278,82:0.194,83:0.333,84:0.222,85:0.25,86:0.222,87:0.25,88:0.278,89:0.194,90:0.306},Ranges:[[0,127,"BasicLatin"],[128,65535,"Other"]]};MathJax.Callback.Queue(["initFont",MathJax.OutputJax["HTML-CSS"],"MathJax_Script"],["loadComplete",MathJax.Ajax,MathJax.OutputJax["HTML-CSS"].fontDir+"/Script/Regular/Main.js"]); 20 | -------------------------------------------------------------------------------- /qt/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Script/Regular/Other.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/HTML-CSS/fonts/TeX/Script/Regular/Other.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.Hub.Insert(MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS.MathJax_Script,{160:[0,0,250,0,0]});MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir+"/Script/Regular/Other.js"); 20 | -------------------------------------------------------------------------------- /qt/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Typewriter/Regular/CombDiacritMarks.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/HTML-CSS/fonts/TeX/Typewriter/Regular/CombDiacritMarks.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.Hub.Insert(MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS.MathJax_Typewriter,{768:[611,-485,0,-409,-195],769:[611,-485,0,-331,-117],770:[611,-460,0,-429,-97],771:[611,-466,0,-438,-88],772:[577,-500,0,-452,-74],774:[611,-504,0,-446,-79],776:[612,-519,0,-421,-104],778:[619,-499,0,-344,-182],780:[577,-449,0,-427,-99]});MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir+"/Typewriter/Regular/CombDiacritMarks.js"); 20 | -------------------------------------------------------------------------------- /qt/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Typewriter/Regular/Main.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/HTML-CSS/fonts/TeX/Typewriter/Regular/Main.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS.MathJax_Typewriter={directory:"Typewriter/Regular",family:"MathJax_Typewriter",testString:"MathJax Typewriter |",Ranges:[[0,127,"BasicLatin"],[128,65535,"Other"],[768,879,"CombDiacritMarks"]]};MathJax.Callback.Queue(["initFont",MathJax.OutputJax["HTML-CSS"],"MathJax_Typewriter"],["loadComplete",MathJax.Ajax,MathJax.OutputJax["HTML-CSS"].fontDir+"/Typewriter/Regular/Main.js"]); 20 | -------------------------------------------------------------------------------- /qt/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/Typewriter/Regular/Other.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/HTML-CSS/fonts/TeX/Typewriter/Regular/Other.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.Hub.Insert(MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS.MathJax_Typewriter,{160:[0,0,250,0,0],305:[431,-1,525,72,462],567:[431,228,525,48,376],915:[611,0,525,25,488],916:[623,0,525,35,489],920:[621,10,525,56,468],923:[623,-1,525,30,495],926:[611,-1,525,33,491],928:[611,-1,525,16,508],931:[611,-1,525,40,484],933:[622,-1,525,38,486],934:[611,-1,525,41,483],936:[611,-1,525,37,487],937:[622,-1,525,32,492],2018:[611,-287,525,175,349],2019:[681,-357,525,176,350],8242:[623,-334,525,211,313]});MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir+"/Typewriter/Regular/Other.js"); 20 | -------------------------------------------------------------------------------- /qt/aqt_data/web/mathjax/jax/output/HTML-CSS/fonts/TeX/WinChrome/Regular/Main.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/HTML-CSS/fonts/TeX/WinChrome/Regular/Main.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS.MathJax_WinChrome={directory:"WinChrome/Regular",family:"MathJax_WinChrome",testString:"> T d \u23A6 \u2A00",skew:{84:0.0278,58096:0.0319},32:[0,0,250,0,0],62:[540,40,778,83,694],84:[717,68,545,34,833],100:[694,11,511,101,567],160:[0,0,250,0,0],8899:[750,249,833,55,777],9126:[1155,644,667,0,347],10752:[949,449,1511,56,1454],58096:[720,69,644,38,947],58097:[587,85,894,96,797]};MathJax.Callback.Queue(["initFont",MathJax.OutputJax["HTML-CSS"],"MathJax_WinChrome"],["loadComplete",MathJax.Ajax,MathJax.OutputJax["HTML-CSS"].fontDir+"/WinChrome/Regular/Main.js"]); 20 | -------------------------------------------------------------------------------- /qt/designer/icons.qrc: -------------------------------------------------------------------------------- 1 | 2 | 3 | icons/anki.png 4 | icons/tag.svg 5 | icons/deck.svg 6 | icons/notetype.svg 7 | icons/heart.svg 8 | icons/collection.svg 9 | icons/media-record.png 10 | 11 | 12 | -------------------------------------------------------------------------------- /qt/designer/icons/anki.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Arthur-Milchior/anki/9e752b4c03dafc5173eb3474a14ed141be56d5fd/qt/designer/icons/anki.png -------------------------------------------------------------------------------- /qt/designer/icons/deck.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /qt/designer/icons/heart.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /qt/designer/icons/media-record.png: -------------------------------------------------------------------------------- 1 | ../../aqt_data/web/imgs/media-record.png -------------------------------------------------------------------------------- /qt/designer/icons/notetype.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /qt/designer/icons/tag.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /qt/ftl/.gitignore: -------------------------------------------------------------------------------- 1 | repo 2 | -------------------------------------------------------------------------------- /qt/ftl/addons.ftl: -------------------------------------------------------------------------------- 1 | addons-possibly-involved = Add-ons possibly involved: { $addons } 2 | addons-failed-to-load = 3 | An add-on you installed failed to load. If problems persist, please go to the Tools>Add-ons menu, and disable or delete the add-on. 4 | 5 | When loading '{$name}': 6 | {$traceback} 7 | # Shown in the add-on configuration screen (Tools>Add-ons>Config), in the title bar 8 | addons-config-window-title = Configure '{$name}' 9 | addons-config-validation-error = There was a problem with the provided configuration: {$problem}, at path {$path}, against schema {$schema}. 10 | -------------------------------------------------------------------------------- /qt/ftl/preferences.ftl: -------------------------------------------------------------------------------- 1 | # shown instead of the 'night mode' option when night mode is forced on because 2 | # macOS is in dark mode 3 | preferences-dark-mode-active = macOS is in dark mode 4 | 5 | preferences-dark-mode-disable = 6 | To show Anki in light mode while macOS is in dark mode, please 7 | see the Night Mode section of the manual. 8 | -------------------------------------------------------------------------------- /qt/ftl/profiles.ftl: -------------------------------------------------------------------------------- 1 | profiles-folder-readme = 2 | This folder stores all of your Anki data in a single location, 3 | to make backups easy. To tell Anki to use a different location, 4 | please see: 5 | 6 | {$link} 7 | -------------------------------------------------------------------------------- /qt/ftl/scripts/fetch-latest-translations: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -eu -o pipefail ${SHELLFLAGS} 4 | 5 | echo "Downloading latest translations..." 6 | 7 | if [ ! -d repo ]; then 8 | git clone https://github.com/ankitects/anki-desktop-ftl repo 9 | fi 10 | 11 | (cd repo && git pull) 12 | -------------------------------------------------------------------------------- /qt/ftl/scripts/upload-latest-templates: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # 3 | # expects to be run from the ftl folder 4 | # 5 | 6 | set -eu -o pipefail ${SHELLFLAGS} 7 | 8 | test -d repo || exit 1 9 | 10 | rsync -av --delete *.ftl repo/desktop/templates/ 11 | (cd repo && git add desktop; git commit -m update || true; git push) 12 | -------------------------------------------------------------------------------- /qt/po/.gitignore: -------------------------------------------------------------------------------- 1 | .build 2 | repo 3 | ftl 4 | strings.json 5 | -------------------------------------------------------------------------------- /qt/po/requirements.txt: -------------------------------------------------------------------------------- 1 | polib 2 | -------------------------------------------------------------------------------- /qt/po/scripts/build-mo-files: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # 3 | # build mo files 4 | # 5 | 6 | set -eu -o pipefail ${SHELLFLAGS} 7 | 8 | targetDir="../aqt_data/locale/gettext" 9 | mkdir -p $targetDir 10 | 11 | echo "Compiling *.po..." 12 | for file in repo/desktop/*/anki.po 13 | do 14 | outdir=$(echo "$file" | \ 15 | perl -pe "s%repo/desktop/(.*)/anki.po%$targetDir/\1/LC_MESSAGES%") 16 | outfile="$outdir/anki.mo" 17 | mkdir -p $outdir 18 | if ! msgmerge -q "$file" repo/desktop/anki.pot | msgfmt - --output-file="$outfile"; then 19 | echo "error building $file"; 20 | exit 1; 21 | fi; 22 | done 23 | -------------------------------------------------------------------------------- /qt/po/scripts/copy-qt-files: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -eu -o pipefail ${SHELLFLAGS} 4 | 5 | out=../aqt_data/locale/qt 6 | mkdir -p "$out" 7 | 8 | qtTranslations="$(python -c "from PyQt5.QtCore import *; import sys; sys.stdout.write(QLibraryInfo.location(QLibraryInfo.TranslationsPath))")" 9 | 10 | case "$(uname -s)" in 11 | CYGWIN*|MINGW*|MSYS*) 12 | qtTranslations="$(cygpath -u "${qtTranslations}")" 13 | ;; 14 | esac 15 | 16 | rsync -a "$qtTranslations/" "$out/" 17 | -------------------------------------------------------------------------------- /qt/po/scripts/fetch-latest-translations: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -eu -o pipefail ${SHELLFLAGS} 4 | 5 | echo "Downloading latest translations..." 6 | 7 | if [ ! -d repo ]; then 8 | git clone https://github.com/ankitects/anki-desktop-i18n repo 9 | fi 10 | 11 | (cd repo && git pull) 12 | -------------------------------------------------------------------------------- /qt/po/scripts/update-po-template: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # 3 | # update template .pot file from source code strings 4 | # 5 | 6 | set -eu -o pipefail ${SHELLFLAGS} 7 | 8 | topDir=$(dirname $0)/../../../ 9 | cd $topDir 10 | 11 | all=all.files 12 | echo "Updating anki.pot..." 13 | for i in pylib/anki/{*.py,importing/*.py}; do 14 | echo $i >> $all 15 | done 16 | for i in qt/aqt/{*.py,forms/*.py}; do 17 | echo $i >> $all 18 | done 19 | 20 | xgettext -cT: -s --no-wrap --files-from=$all --output=qt/po/repo/desktop/anki.pot 21 | rm $all 22 | -------------------------------------------------------------------------------- /qt/po/scripts/upload-latest-template: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -eu -o pipefail ${SHELLFLAGS} 4 | 5 | scripts/update-po-template 6 | (cd repo && git add desktop; git commit -m update; git push) 7 | -------------------------------------------------------------------------------- /qt/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | # Minimum requirements for the build system to execute. 3 | # https://stackoverflow.com/questions/48048745/setup-py-require-a-recent-version-of-setuptools-before-trying-to-install 4 | requires = ["setuptools", "wheel"] 5 | -------------------------------------------------------------------------------- /qt/requirements.dev: -------------------------------------------------------------------------------- 1 | mock 2 | -------------------------------------------------------------------------------- /qt/requirements.qt: -------------------------------------------------------------------------------- 1 | pyqt5==5.15.0 2 | pyqtwebengine==5.15.0 3 | 4 | 5 | -------------------------------------------------------------------------------- /qt/runanki: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | 3 | import aqt 4 | aqt.run() 5 | -------------------------------------------------------------------------------- /qt/tests/FILES.md: -------------------------------------------------------------------------------- 1 | As the file with [same name in parent directory](../FILES.md), this 2 | document contains a succint description of the content of each file 3 | from this folder. 4 | 5 | Contains tests related to the back-end. Currently related to add-ons 6 | and translations 7 | -------------------------------------------------------------------------------- /qt/tests/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Arthur-Milchior/anki/9e752b4c03dafc5173eb3474a14ed141be56d5fd/qt/tests/__init__.py -------------------------------------------------------------------------------- /qt/tests/test_i18n.py: -------------------------------------------------------------------------------- 1 | import anki.lang 2 | from anki.rsbackend import TR 3 | 4 | 5 | def test_no_collection_i18n(): 6 | anki.lang.set_lang("zz", "") 7 | tr2 = anki.lang.current_i18n.translate 8 | no_uni = anki.lang.without_unicode_isolation 9 | assert no_uni(tr2(TR.STATISTICS_REVIEWS, reviews=2)) == "2 reviews" 10 | 11 | anki.lang.set_lang("ja", "") 12 | tr2 = anki.lang.current_i18n.translate 13 | assert no_uni(tr2(TR.STATISTICS_REVIEWS, reviews=2)) == "2 枚の復習カード" 14 | -------------------------------------------------------------------------------- /qt/tools/anki-wait.bat: -------------------------------------------------------------------------------- 1 | cd .. 2 | set PYTHONPATH=../lib 3 | python anki 4 | pause 5 | -------------------------------------------------------------------------------- /qt/tools/build_ui.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # 3 | # generate python files based on the designer ui files. pyuic5 and pyrcc5 4 | # should be on the path. 5 | # 6 | 7 | set -eu -o pipefail ${SHELLFLAGS} 8 | 9 | if [ ! -d "designer" ] 10 | then 11 | echo "Please run this from the project root" 12 | exit 13 | fi 14 | 15 | mkdir -p aqt/forms 16 | 17 | init=aqt/forms/__init__.py 18 | temp=aqt/forms/scratch 19 | rm -f $init $temp 20 | echo "# This file auto-generated by build_ui.sh. Don't edit." > $init 21 | echo "__all__ = [" >> $init 22 | 23 | echo "Generating forms.." 24 | for i in designer/*.ui 25 | do 26 | base=$(basename $i .ui) 27 | py="aqt/forms/${base}.py" 28 | echo " \"$base\"," >> $init 29 | echo "from . import $base" >> $temp 30 | if [ $i -nt $py ]; then 31 | echo " * "$py 32 | pyuic5 --from-imports $i -o $py.tmp 33 | (cat < $py 34 | # -*- coding: utf-8 -*- 35 | # pylint: disable=unsubscriptable-object,unused-import 36 | from anki.lang import _ 37 | EOF 38 | rm $py.tmp 39 | fi 40 | done 41 | echo "]" >> $init 42 | cat $temp >> $init 43 | rm $temp 44 | 45 | echo "Building resources.." 46 | pyrcc5 designer/icons.qrc -o aqt/forms/icons_rc.py 47 | -------------------------------------------------------------------------------- /qt/tools/extract_scss_colors.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | # -*- coding: UTF-8 -*- 3 | import re 4 | 5 | import json 6 | 7 | colors = {} 8 | 9 | for line in open("ts/scss/_vars.scss"): 10 | line = line.strip() 11 | if not line: 12 | continue 13 | m = re.match(r"^\$(.+): (.+);$", line) 14 | if not m: 15 | print("failed to match", line) 16 | continue 17 | 18 | var = m.group(1) 19 | val = m.group(2) 20 | 21 | colors[var] = val 22 | 23 | with open("aqt/colors.py", "w") as buf: 24 | buf.write("# this file is auto-generated from _vars.scss\n") 25 | buf.write("colors = " + json.dumps(colors)) 26 | -------------------------------------------------------------------------------- /qt/tools/runanki.system.in: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | 3 | import sys 4 | sys.path.append("@PREFIX@/share/anki") 5 | 6 | import aqt 7 | aqt.run() 8 | -------------------------------------------------------------------------------- /qt/tools/typecheck-setup.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # 3 | # Anki bundles sip 5 generated typings that allow type checking Qt code when 4 | # installed next to the original modules. Attempting to use them as a separate 5 | # stubs distribution with MYPYPATH yielded a bunch of errors which I was not 6 | # able to resolve. A solution that doesn't require modifying the python install 7 | # would be welcome! 8 | 9 | set -eu -o pipefail ${SHELLFLAGS} 10 | 11 | # https://stackoverflow.com/questions/3601515/how-to-check-if-a-variable-is-set-in-bash 12 | if [[ -z "${OS+x}" ]]; then 13 | OS=unknown; 14 | fi 15 | 16 | TOOLS="$(cd "`dirname "$0"`"; pwd)" 17 | modDir="$(python -c 'import PyQt5, sys, os; sys.stdout.write(os.path.dirname(sys.modules["PyQt5"].__file__))')" 18 | 19 | # fix broken stubs in pyqt5.15.0 release 20 | (cd "$modDir" && perl -i'' -pe 's/(\s*None) =/$1_ =/' *.pyi && touch py.typed) 21 | -------------------------------------------------------------------------------- /qt/ts/.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "trailingComma": "es5", 3 | "printWidth": 88, 4 | "tabWidth": 4, 5 | "semi": true 6 | } 7 | -------------------------------------------------------------------------------- /qt/ts/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "anki-dtop-js", 3 | "version": "1.0.0", 4 | "description": "Anki desktop js support files", 5 | "scripts": { 6 | "build": "tsc --build && sass --no-source-map scss:../aqt_data/web", 7 | "pretty": "prettier --write src/*.ts", 8 | "check-pretty": "prettier --check src/*.ts" 9 | }, 10 | "private": true, 11 | "author": "Ankitects Pty Ltd", 12 | "license": "AGPL-3.0-or-later", 13 | "devDependencies": { 14 | "@types/jquery": "^3.3.31", 15 | "@types/jqueryui": "^1.12.9", 16 | "@types/mathjax": "0.0.36", 17 | "prettier": "^1.19.1", 18 | "sass": "^1.25.0", 19 | "typescript": "^3.7.3" 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /qt/ts/scss/_card_counts.scss: -------------------------------------------------------------------------------- 1 | @use 'vars'; 2 | 3 | .review-count { 4 | color: vars.$day-review-count; 5 | } 6 | 7 | .new-count { 8 | color: vars.$day-new-count; 9 | } 10 | 11 | .learn-count { 12 | color: vars.$day-learn-count; 13 | } 14 | 15 | .zero-count { 16 | color: vars.$day-zero-count; 17 | } 18 | 19 | .nightMode { 20 | .review-count { 21 | color: vars.$night-review-count; 22 | } 23 | 24 | .new-count { 25 | color: vars.$night-new-count; 26 | } 27 | 28 | .learn-count { 29 | color: vars.$night-learn-count; 30 | } 31 | 32 | .zero-count { 33 | color: vars.$night-zero-count; 34 | } 35 | } 36 | 37 | -------------------------------------------------------------------------------- /qt/ts/scss/overview.scss: -------------------------------------------------------------------------------- 1 | /* Copyright: Ankitects Pty Ltd and contributors 2 | * License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html */ 3 | 4 | @use 'vars'; 5 | @use 'card_counts'; 6 | 7 | .smallLink { 8 | font-size: 10px; 9 | } 10 | 11 | h3 { 12 | margin-bottom: 0; 13 | } 14 | 15 | .descfont { 16 | padding: 1em; 17 | color: vars.$day-slightly-grey-text; 18 | } 19 | 20 | .description { 21 | white-space: pre-wrap; 22 | } 23 | 24 | #fulldesc { 25 | display: none; 26 | } 27 | 28 | .descmid { 29 | width: 70%; 30 | margin: 0 auto 0; 31 | text-align: left; 32 | } 33 | 34 | .dyn { 35 | text-align: center; 36 | } 37 | 38 | .nightMode { 39 | .descfont { 40 | color: vars.$night-slightly-grey-text; 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /qt/ts/scss/reviewer-bottom.scss: -------------------------------------------------------------------------------- 1 | /* Copyright: Ankitects Pty Ltd and contributors 2 | * License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html */ 3 | 4 | @use 'vars'; 5 | @use 'card_counts'; 6 | 7 | body { 8 | margin: 0; 9 | padding: 0; 10 | } 11 | 12 | button { 13 | min-width: 60px; 14 | white-space: nowrap; 15 | margin: 0.5em; 16 | } 17 | 18 | .hitem { 19 | margin-top: 2px; 20 | } 21 | 22 | .stat { 23 | padding-top: 5px; 24 | } 25 | 26 | .stat2 { 27 | padding-top: 3px; 28 | font-weight: normal; 29 | } 30 | 31 | .stattxt { 32 | padding-left: 5px; 33 | padding-right: 5px; 34 | white-space: nowrap; 35 | } 36 | 37 | #ansbut { margin-bottom: 1em; } 38 | 39 | .nobold { 40 | font-weight: normal; 41 | display: inline-block; 42 | padding-top: 4px; 43 | } 44 | 45 | .spacer { 46 | height: 18px; 47 | } 48 | 49 | .spacer2 { 50 | height: 16px; 51 | } 52 | 53 | #outer { 54 | border-top: 1px solid vars.$day-border; 55 | } 56 | 57 | #innertable { 58 | padding: 3px; 59 | } 60 | 61 | .nightMode { 62 | #outer { 63 | border-top-color: vars.$night-faint-border; 64 | } 65 | } 66 | -------------------------------------------------------------------------------- /qt/ts/scss/toolbar-bottom.scss: -------------------------------------------------------------------------------- 1 | /* Copyright: Ankitects Pty Ltd and contributors 2 | * License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html */ 3 | 4 | #header { 5 | border-bottom: 0; 6 | margin-bottom: 6px; 7 | margin-top: 0; 8 | padding: 9px; 9 | } 10 | -------------------------------------------------------------------------------- /qt/ts/scss/webview.scss: -------------------------------------------------------------------------------- 1 | /* Copyright: Ankitects Pty Ltd and contributors 2 | * License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html */ 3 | 4 | @use 'vars'; 5 | @use 'buttons'; 6 | 7 | body { 8 | margin: 2em; 9 | color: vars.$day-text-fg; 10 | 11 | // currently this is injected via webview.py to try to match the 12 | // system background color 13 | // background: vars.$day-window-bg; 14 | } 15 | 16 | h1 { 17 | margin-bottom: 0.2em; 18 | } 19 | 20 | a { 21 | color: vars.$day-link; 22 | } 23 | 24 | body.nightMode { 25 | color: vars.$night-text-fg; 26 | background: vars.$night-window-bg; 27 | } 28 | 29 | body.nightMode::-webkit-scrollbar { 30 | background: vars.$night-window-bg; 31 | } 32 | 33 | body.nightMode::-webkit-scrollbar:horizontal { 34 | height: 12px; 35 | } 36 | 37 | body.nightMode::-webkit-scrollbar:vertical { 38 | width: 12px; 39 | } 40 | 41 | body.nightMode::-webkit-scrollbar-thumb { 42 | background: vars.$fusion-button-hover-bg; 43 | border-radius: 8px; 44 | } 45 | 46 | body.nightMode::-webkit-scrollbar-thumb:horizontal { 47 | min-width: 50px; 48 | } 49 | 50 | body.nightMode::-webkit-scrollbar-thumb:vertical { 51 | min-height: 50px; 52 | } 53 | 54 | .nightMode { 55 | a { 56 | color: vars.$night-link; 57 | } 58 | } 59 | 60 | body { overscroll-behavior: none; } 61 | -------------------------------------------------------------------------------- /qt/ts/src/deckbrowser.ts: -------------------------------------------------------------------------------- 1 | /* Copyright: Ankitects Pty Ltd and contributors 2 | * License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html */ 3 | 4 | $(init); 5 | 6 | function init() { 7 | $("tr.deck").draggable({ 8 | scroll: false, 9 | 10 | // can't use "helper: 'clone'" because of a bug in jQuery 1.5 11 | helper: function(event) { 12 | return $(this).clone(false); 13 | }, 14 | delay: 200, 15 | opacity: 0.7, 16 | }); 17 | $("tr.deck").droppable({ 18 | drop: handleDropEvent, 19 | hoverClass: "drag-hover", 20 | }); 21 | $("tr.top-level-drag-row").droppable({ 22 | drop: handleDropEvent, 23 | hoverClass: "drag-hover", 24 | }); 25 | } 26 | 27 | function handleDropEvent(event, ui) { 28 | const draggedDeckId = ui.draggable.attr("id"); 29 | const ontoDeckId = $(this).attr("id") || ""; 30 | 31 | pycmd("drag:" + draggedDeckId + "," + ontoDeckId); 32 | } 33 | -------------------------------------------------------------------------------- /qt/ts/src/overview.ts: -------------------------------------------------------------------------------- 1 | /* Copyright: Ankitects Pty Ltd and contributors 2 | * License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html */ 3 | 4 | $(function() { 5 | $("#study").focus(); 6 | }); 7 | -------------------------------------------------------------------------------- /qt/ts/src/toolbar.ts: -------------------------------------------------------------------------------- 1 | enum SyncState { 2 | NoChanges = 0, 3 | Normal, 4 | Full, 5 | } 6 | 7 | function updateSyncColor(state: SyncState) { 8 | const elem = document.getElementById("sync"); 9 | switch (state) { 10 | case SyncState.NoChanges: 11 | elem.classList.remove("full-sync", "normal-sync"); 12 | break; 13 | case SyncState.Normal: 14 | elem.classList.add("normal-sync"); 15 | elem.classList.remove("full-sync"); 16 | break; 17 | case SyncState.Full: 18 | elem.classList.add("full-sync"); 19 | elem.classList.remove("normal-sync"); 20 | break; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /qt/ts/src/types/global.d.ts: -------------------------------------------------------------------------------- 1 | declare function pycmd(cmd: string, result_callback?: (arg: any) => void): any; 2 | -------------------------------------------------------------------------------- /qt/ts/src/webview.ts: -------------------------------------------------------------------------------- 1 | /* Copyright: Ankitects Pty Ltd and contributors 2 | * License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html */ 3 | 4 | // prevent backspace key from going back a page 5 | document.addEventListener("keydown", function(evt: KeyboardEvent) { 6 | if (evt.keyCode !== 8) { 7 | return; 8 | } 9 | let isText = 0; 10 | const node = evt.target as Element; 11 | const nn = node.nodeName; 12 | if (nn === "INPUT" || nn === "TEXTAREA") { 13 | isText = 1; 14 | } else if (nn === "DIV" && (node as HTMLDivElement).contentEditable) { 15 | isText = 1; 16 | } 17 | if (!isText) { 18 | evt.preventDefault(); 19 | } 20 | }); 21 | -------------------------------------------------------------------------------- /qt/ts/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es6", 4 | "module": "commonjs", 5 | "lib": [ 6 | "es6", 7 | "dom" 8 | ], 9 | "rootDir": "src", 10 | "outDir": "../aqt_data/web", 11 | "strict": true, 12 | /* Enable all strict type-checking options. */ 13 | "noImplicitAny": false, 14 | /* Raise error on expressions and declarations with an implied 'any' type. */ 15 | "strictNullChecks": false, 16 | /* Enable strict null checks. */ 17 | "noImplicitThis": false, 18 | /* Raise error on 'this' expressions with an implied 'any' type. */ 19 | "esModuleInterop": true 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /rslib/.gitignore: -------------------------------------------------------------------------------- 1 | Cargo.lock 2 | src/backend_proto.rs 3 | .build 4 | target 5 | -------------------------------------------------------------------------------- /rslib/FILES.md: -------------------------------------------------------------------------------- 1 | As the file with [same name in parent directory](../FILES.md), this 2 | document contains a succint description of the content of each file 3 | from this folder. 4 | 5 | This file contains all of the rust part of the back-end of Anki. It 6 | does not deal with connecting rust with python, this is dealt in 7 | [rspy](../rspy). 8 | 9 | # ftl 10 | This subfolder contains the english version of strings which are 11 | related to the back-end and should be shown to the users. 12 | 13 | # src 14 | This subfolder contains the source code of the rust part of the 15 | back-end. 16 | 17 | # tests 18 | This subfolder contains unit tests for the rust part of the back-end. 19 | -------------------------------------------------------------------------------- /rslib/README.md: -------------------------------------------------------------------------------- 1 | To build from scratch, please see https://github.com/ankitects/anki 2 | -------------------------------------------------------------------------------- /rslib/ftl/.gitignore: -------------------------------------------------------------------------------- 1 | repo 2 | -------------------------------------------------------------------------------- /rslib/ftl/FILES.md: -------------------------------------------------------------------------------- 1 | As the file with [same name in parent directory](../FILES.md), this 2 | document contains a succint description of the content of each file 3 | from this folder. 4 | 5 | Each .ftl file contains English version of strings, related to the 6 | back-end, and that may be shown to the user. 7 | -------------------------------------------------------------------------------- /rslib/ftl/card-templates.ftl: -------------------------------------------------------------------------------- 1 | card-templates-changes-will-affect-notes = 2 | { $count -> 3 | [one] Changes below will affect the { $count } note that uses this card type. 4 | *[other] Changes below will affect the { $count } notes that use this card type. 5 | } 6 | card-templates-card-type = Card Type: 7 | card-templates-front-template = Front Template 8 | card-templates-back-template = Back Template 9 | card-templates-template-styling = Styling 10 | card-templates-front-preview = Front Preview 11 | card-templates-back-preview = Back Preview 12 | card-templates-preview-box = Preview 13 | card-templates-template-box = Template 14 | card-templates-sample-cloze = This is a {"{{c1::"}sample{"}}"} cloze deletion. 15 | card-templates-fill-empty = Fill Empty Fields 16 | -------------------------------------------------------------------------------- /rslib/ftl/deck-config.ftl: -------------------------------------------------------------------------------- 1 | # Used in the deck configuration screen to show how many decks are used 2 | # by a particular configuration group, eg "Group1 (used by 3 decks)" 3 | deck-config-used-by-decks = 4 | used by { $decks -> 5 | [one] 1 deck 6 | *[other] { $decks } decks 7 | } 8 | deck-config-default-name = Default 9 | -------------------------------------------------------------------------------- /rslib/ftl/empty-cards.ftl: -------------------------------------------------------------------------------- 1 | empty-cards-for-note-type = Empty cards for { $notetype }: 2 | empty-cards-count-line = 3 | { $empty_count } of { $existing_count } cards empty ({ $template_names }). 4 | empty-cards-window-title = Empty Cards 5 | empty-cards-preserve-notes-checkbox = Keep notes with no valid cards 6 | empty-cards-delete-button = Delete 7 | empty-cards-not-found = No empty cards. 8 | empty-cards-deleted-count = Deleted { $cards -> 9 | [one] { $cards } card. 10 | *[other] { $cards } cards. 11 | } 12 | empty-cards-delete-empty-cards = Delete Empty Cards 13 | empty-cards-delete-empty-notes = Delete Empty Notes 14 | empty-cards-deleting = Deleting... 15 | -------------------------------------------------------------------------------- /rslib/ftl/filtering.ftl: -------------------------------------------------------------------------------- 1 | # True if a card is due/ready for review 2 | filtering-is-due = Due 3 | -------------------------------------------------------------------------------- /rslib/ftl/findreplace.ftl: -------------------------------------------------------------------------------- 1 | findreplace-notes-updated = { $total -> 2 | [one] {$changed} of {$total} note updated 3 | *[other] {$changed} of {$total} notes updated 4 | } 5 | -------------------------------------------------------------------------------- /rslib/ftl/importing.ftl: -------------------------------------------------------------------------------- 1 | importing-failed-debug-info = Import failed. Debugging info: 2 | -------------------------------------------------------------------------------- /rslib/ftl/network.ftl: -------------------------------------------------------------------------------- 1 | network-offline = Please check your internet connection. 2 | network-timeout = Connection timed out. Please try again on a different network. 3 | network-proxy-auth = Your proxy requires authentication. 4 | network-other = A network error occurred. 5 | 6 | network-details = Error details: {$details} 7 | -------------------------------------------------------------------------------- /rslib/ftl/notetypes.ftl: -------------------------------------------------------------------------------- 1 | ## Default field names in newly created note types 2 | 3 | notetypes-front-field = Front 4 | notetypes-back-field = Back 5 | notetypes-add-reverse-field = Add Reverse 6 | notetypes-text-field = Text 7 | notetypes-back-extra-field = Back Extra 8 | 9 | ## Default note type names 10 | 11 | notetypes-basic-name = Basic 12 | notetypes-basic-reversed-name = Basic (and reversed card) 13 | notetypes-basic-optional-reversed-name = Basic (optional reversed card) 14 | notetypes-basic-type-answer-name = Basic (type in the answer) 15 | notetypes-cloze-name = Cloze 16 | 17 | ## Default card template names 18 | 19 | notetypes-card-1-name = Card 1 20 | notetypes-card-2-name = Card 2 21 | 22 | -------------------------------------------------------------------------------- /rslib/ftl/scripts/fetch-latest-translations: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -eu -o pipefail ${SHELLFLAGS} 4 | 5 | echo "Downloading latest translations..." 6 | 7 | if [ ! -d repo ]; then 8 | git clone https://github.com/ankitects/anki-core-i18n repo 9 | fi 10 | 11 | (cd repo && git pull) 12 | -------------------------------------------------------------------------------- /rslib/ftl/scripts/upload-latest-templates: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # 3 | # expects to be run from the ftl folder 4 | # 5 | 6 | set -eu -o pipefail ${SHELLFLAGS} 7 | 8 | test -d repo || exit 1 9 | 10 | rsync -av --delete *.ftl repo/core/templates/ 11 | (cd repo && git add core; git commit -m update || true; git push) 12 | 13 | -------------------------------------------------------------------------------- /rslib/ftl/search.ftl: -------------------------------------------------------------------------------- 1 | search-invalid = Invalid search - please check for typing mistakes. 2 | -------------------------------------------------------------------------------- /rslib/rust-toolchain: -------------------------------------------------------------------------------- 1 | nightly-2020-02-27 2 | -------------------------------------------------------------------------------- /rslib/rustfmt.toml: -------------------------------------------------------------------------------- 1 | ignore = ["backend_proto.rs"] 2 | -------------------------------------------------------------------------------- /rslib/src/decks/counts.rs: -------------------------------------------------------------------------------- 1 | // Copyright: Ankitects Pty Ltd and contributors 2 | // License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html 3 | 4 | use crate::{collection::Collection, decks::DeckID, err::Result}; 5 | use std::collections::HashMap; 6 | 7 | #[derive(Debug)] 8 | pub(crate) struct DueCounts { 9 | pub new: u32, 10 | pub review: u32, 11 | pub learning: u32, 12 | } 13 | 14 | impl Collection { 15 | pub(crate) fn due_counts( 16 | &mut self, 17 | limit_to: Option<&str>, 18 | ) -> Result> { 19 | let days_elapsed = self.timing_today()?.days_elapsed; 20 | let learn_cutoff = self.learn_cutoff(); 21 | if let Some(limit) = limit_to { 22 | self.storage 23 | .due_counts_limited(self.sched_ver(), days_elapsed, learn_cutoff, limit) 24 | } else { 25 | self.storage 26 | .due_counts(self.sched_ver(), days_elapsed, learn_cutoff) 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /rslib/src/i18n/.gitignore: -------------------------------------------------------------------------------- 1 | autogen.rs 2 | -------------------------------------------------------------------------------- /rslib/src/i18n/ftl/.gitignore: -------------------------------------------------------------------------------- 1 | *.ftl 2 | -------------------------------------------------------------------------------- /rslib/src/lib.rs: -------------------------------------------------------------------------------- 1 | // Copyright: Ankitects Pty Ltd and contributors 2 | // License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html 3 | 4 | #![deny(unused_must_use)] 5 | 6 | pub mod backend; 7 | mod backend_proto; 8 | pub mod card; 9 | pub mod cloze; 10 | pub mod collection; 11 | pub mod config; 12 | pub mod dbcheck; 13 | pub mod deckconf; 14 | pub mod decks; 15 | pub mod err; 16 | pub mod findreplace; 17 | pub mod i18n; 18 | pub mod latex; 19 | pub mod log; 20 | pub mod media; 21 | pub mod notes; 22 | pub mod notetype; 23 | mod preferences; 24 | pub mod prelude; 25 | pub mod revlog; 26 | pub mod sched; 27 | pub mod search; 28 | pub mod serde; 29 | pub mod storage; 30 | mod sync; 31 | pub mod tags; 32 | pub mod template; 33 | pub mod template_filters; 34 | pub mod text; 35 | pub mod timestamp; 36 | pub mod types; 37 | pub mod undo; 38 | pub mod version; 39 | -------------------------------------------------------------------------------- /rslib/src/media/schema.sql: -------------------------------------------------------------------------------- 1 | create table media ( 2 | fname text not null primary key, 3 | csum text, -- null indicates deleted file 4 | mtime int not null, -- zero if deleted 5 | dirty int not null 6 | ) without rowid; 7 | 8 | create index idx_media_dirty on media (dirty) where dirty=1; 9 | 10 | create table meta (dirMod int, lastUsn int); insert into meta values (0, 0); 11 | -------------------------------------------------------------------------------- /rslib/src/notetype/header.tex: -------------------------------------------------------------------------------- 1 | \documentclass[12pt]{article} 2 | \special{papersize=3in,5in} 3 | \usepackage[utf8]{inputenc} 4 | \usepackage{amssymb,amsmath} 5 | \pagestyle{empty} 6 | \setlength{\parindent}{0in} 7 | \begin{document} 8 | -------------------------------------------------------------------------------- /rslib/src/notetype/styling.css: -------------------------------------------------------------------------------- 1 | .card { 2 | font-family: arial; 3 | font-size: 20px; 4 | text-align: center; 5 | color: black; 6 | background-color: white; 7 | } 8 | -------------------------------------------------------------------------------- /rslib/src/prelude.rs: -------------------------------------------------------------------------------- 1 | // Copyright: Ankitects Pty Ltd and contributors 2 | // License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html 3 | 4 | pub use crate::{ 5 | card::CardID, 6 | collection::Collection, 7 | deckconf::DeckConfID, 8 | decks::DeckID, 9 | err::{AnkiError, Result}, 10 | notes::NoteID, 11 | notetype::NoteTypeID, 12 | revlog::RevlogID, 13 | timestamp::{TimestampMillis, TimestampSecs}, 14 | types::Usn, 15 | }; 16 | pub use slog::{debug, Logger}; 17 | -------------------------------------------------------------------------------- /rslib/src/revlog.rs: -------------------------------------------------------------------------------- 1 | // Copyright: Ankitects Pty Ltd and contributors 2 | // License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html 3 | 4 | use crate::define_newtype; 5 | 6 | define_newtype!(RevlogID, i64); 7 | -------------------------------------------------------------------------------- /rslib/src/search/deck_order.sql: -------------------------------------------------------------------------------- 1 | drop table if exists sort_order; 2 | create temporary table sort_order ( 3 | pos integer primary key, 4 | did integer not null unique 5 | ); 6 | insert into sort_order (did) 7 | select 8 | id 9 | from decks 10 | order by 11 | name; -------------------------------------------------------------------------------- /rslib/src/search/mod.rs: -------------------------------------------------------------------------------- 1 | mod cards; 2 | mod notes; 3 | mod parser; 4 | mod sqlwriter; 5 | 6 | pub use cards::SortMode; 7 | -------------------------------------------------------------------------------- /rslib/src/search/notes.rs: -------------------------------------------------------------------------------- 1 | // Copyright: Ankitects Pty Ltd and contributors 2 | // License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html 3 | 4 | use super::{parser::Node, sqlwriter::SqlWriter}; 5 | use crate::collection::Collection; 6 | use crate::err::Result; 7 | use crate::notes::NoteID; 8 | use crate::search::parser::parse; 9 | 10 | impl Collection { 11 | pub fn search_notes(&mut self, search: &str) -> Result> { 12 | let top_node = Node::Group(parse(search)?); 13 | let writer = SqlWriter::new(self); 14 | let (sql, args) = writer.build_notes_query(&top_node)?; 15 | 16 | let mut stmt = self.storage.db.prepare(&sql)?; 17 | let ids: Vec<_> = stmt 18 | .query_map(&args, |row| row.get(0))? 19 | .collect::>()?; 20 | 21 | Ok(ids) 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /rslib/src/search/notetype_order.sql: -------------------------------------------------------------------------------- 1 | drop table if exists sort_order; 2 | create temporary table sort_order ( 3 | pos integer primary key, 4 | ntid integer not null unique 5 | ); 6 | insert into sort_order (ntid) 7 | select 8 | id 9 | from notetypes 10 | order by 11 | name; -------------------------------------------------------------------------------- /rslib/src/search/template_order.sql: -------------------------------------------------------------------------------- 1 | drop table if exists sort_order; 2 | create temporary table sort_order ( 3 | pos integer primary key, 4 | ntid integer not null, 5 | ord integer not null, 6 | unique(ntid, ord) 7 | ); 8 | insert into sort_order (ntid, ord) 9 | select 10 | ntid, 11 | ord 12 | from templates 13 | order by 14 | name -------------------------------------------------------------------------------- /rslib/src/serde.rs: -------------------------------------------------------------------------------- 1 | // Copyright: Ankitects Pty Ltd and contributors 2 | // License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html 3 | 4 | use serde::Deserialize as DeTrait; 5 | pub(crate) use serde_aux::field_attributes::{ 6 | deserialize_bool_from_anything, deserialize_number_from_string, 7 | }; 8 | use serde_json::Value; 9 | 10 | pub(crate) fn default_on_invalid<'de, T, D>(deserializer: D) -> Result 11 | where 12 | T: Default + DeTrait<'de>, 13 | D: serde::de::Deserializer<'de>, 14 | { 15 | let v: Value = DeTrait::deserialize(deserializer)?; 16 | Ok(T::deserialize(v).unwrap_or_default()) 17 | } 18 | -------------------------------------------------------------------------------- /rslib/src/storage/card/add_card.sql: -------------------------------------------------------------------------------- 1 | insert into cards ( 2 | id, 3 | nid, 4 | did, 5 | ord, 6 | mod, 7 | usn, 8 | type, 9 | queue, 10 | due, 11 | ivl, 12 | factor, 13 | reps, 14 | lapses, 15 | left, 16 | odue, 17 | odid, 18 | flags, 19 | data 20 | ) 21 | values 22 | ( 23 | ( 24 | case 25 | when ?1 in ( 26 | select 27 | id 28 | from cards 29 | ) then ( 30 | select 31 | max(id) + 1 32 | from cards 33 | ) 34 | else ?1 35 | end 36 | ), 37 | ?, 38 | ?, 39 | ?, 40 | ?, 41 | ?, 42 | ?, 43 | ?, 44 | ?, 45 | ?, 46 | ?, 47 | ?, 48 | ?, 49 | ?, 50 | ?, 51 | ?, 52 | ?, 53 | ? 54 | ) -------------------------------------------------------------------------------- /rslib/src/storage/card/add_or_update.sql: -------------------------------------------------------------------------------- 1 | insert 2 | or replace into cards ( 3 | id, 4 | nid, 5 | did, 6 | ord, 7 | mod, 8 | usn, 9 | type, 10 | queue, 11 | due, 12 | ivl, 13 | factor, 14 | reps, 15 | lapses, 16 | left, 17 | odue, 18 | odid, 19 | flags, 20 | data 21 | ) 22 | values 23 | ( 24 | ?, 25 | ?, 26 | ?, 27 | ?, 28 | ?, 29 | ?, 30 | ?, 31 | ?, 32 | ?, 33 | ?, 34 | ?, 35 | ?, 36 | ?, 37 | ?, 38 | ?, 39 | ?, 40 | ?, 41 | ? 42 | ) -------------------------------------------------------------------------------- /rslib/src/storage/card/fix_due_new.sql: -------------------------------------------------------------------------------- 1 | update cards 2 | set 3 | due = ( 4 | case 5 | when type = 0 6 | and queue != 4 then 1000000 + due % 1000000 7 | else due 8 | end 9 | ), 10 | mod = ?1, 11 | usn = ?2 12 | where 13 | due != ( 14 | case 15 | when type = 0 16 | and queue != 4 then 1000000 + due % 1000000 17 | else due 18 | end 19 | ) 20 | and due >= 1000000; -------------------------------------------------------------------------------- /rslib/src/storage/card/fix_due_other.sql: -------------------------------------------------------------------------------- 1 | update cards 2 | set 3 | due = ( 4 | case 5 | when queue = 2 6 | and due > 100000 then ?1 7 | else min(max(round(due), -2147483648), 2147483647) 8 | end 9 | ), 10 | mod = ?2, 11 | usn = ?3 12 | where 13 | due != ( 14 | case 15 | when queue = 2 16 | and due > 100000 then ?1 17 | else min(max(round(due), -2147483648), 2147483647) 18 | end 19 | ); -------------------------------------------------------------------------------- /rslib/src/storage/card/fix_ivl.sql: -------------------------------------------------------------------------------- 1 | update cards 2 | set 3 | ivl = min(max(round(ivl), 0), 2147483647), 4 | mod = ?1, 5 | usn = ?2 6 | where 7 | ivl != min(max(round(ivl), 0), 2147483647) -------------------------------------------------------------------------------- /rslib/src/storage/card/fix_odue.sql: -------------------------------------------------------------------------------- 1 | update cards 2 | set 3 | odue = ( 4 | case 5 | when odue > 0 6 | and ( 7 | type = 1 8 | or queue = 2 9 | ) 10 | and not odid then 0 11 | else min(max(round(odue), -2147483648), 2147483647) 12 | end 13 | ), 14 | mod = ?1, 15 | usn = ?2 16 | where 17 | odue != ( 18 | case 19 | when odue > 0 20 | and ( 21 | type = 1 22 | or queue = 2 23 | ) 24 | and not odid then 0 25 | else min(max(round(odue), -2147483648), 2147483647) 26 | end 27 | ); -------------------------------------------------------------------------------- /rslib/src/storage/card/get_card.sql: -------------------------------------------------------------------------------- 1 | select 2 | id, 3 | nid, 4 | did, 5 | ord, 6 | cast(mod as integer), 7 | usn, 8 | type, 9 | queue, 10 | due, 11 | cast(ivl as integer), 12 | factor, 13 | reps, 14 | lapses, 15 | left, 16 | odue, 17 | odid, 18 | flags, 19 | data 20 | from cards -------------------------------------------------------------------------------- /rslib/src/storage/card/update_card.sql: -------------------------------------------------------------------------------- 1 | update cards 2 | set 3 | nid = ?, 4 | did = ?, 5 | ord = ?, 6 | mod = ?, 7 | usn = ?, 8 | type = ?, 9 | queue = ?, 10 | due = ?, 11 | ivl = ?, 12 | factor = ?, 13 | reps = ?, 14 | lapses = ?, 15 | left = ?, 16 | odue = ?, 17 | odid = ?, 18 | flags = ?, 19 | data = ? 20 | where 21 | id = ? -------------------------------------------------------------------------------- /rslib/src/storage/config/add.sql: -------------------------------------------------------------------------------- 1 | insert 2 | or replace into config (key, usn, mtime_secs, val) 3 | values 4 | (?, ?, ?, ?) -------------------------------------------------------------------------------- /rslib/src/storage/config/get.sql: -------------------------------------------------------------------------------- 1 | select 2 | val 3 | from config 4 | where 5 | key = ? -------------------------------------------------------------------------------- /rslib/src/storage/deck/alloc_id.sql: -------------------------------------------------------------------------------- 1 | select 2 | case 3 | when ?1 in ( 4 | select 5 | id 6 | from decks 7 | ) then ( 8 | select 9 | max(id) + 1 10 | from decks 11 | ) 12 | else ?1 13 | end; -------------------------------------------------------------------------------- /rslib/src/storage/deck/cards_for_deck.sql: -------------------------------------------------------------------------------- 1 | select 2 | id 3 | from cards 4 | where 5 | did = ?1 6 | or ( 7 | odid != 0 8 | and odid = ?1 9 | ) -------------------------------------------------------------------------------- /rslib/src/storage/deck/due_counts.sql: -------------------------------------------------------------------------------- 1 | select 2 | did, 3 | -- new 4 | sum(queue = ?1), 5 | -- reviews 6 | sum( 7 | queue = ?2 8 | and due <= ?3 9 | ), 10 | -- learning 11 | sum( 12 | ( 13 | case 14 | -- v2 scheduler 15 | ?4 16 | when 2 then ( 17 | queue = ?5 18 | and due < ?6 19 | ) 20 | or ( 21 | queue = ?7 22 | and due <= ?3 23 | ) 24 | else ( 25 | -- v1 scheduler 26 | case 27 | when queue = ?5 28 | and due < ?6 then left / 1000 29 | when queue = ?7 30 | and due <= ?3 then 1 31 | else 0 32 | end 33 | ) 34 | end 35 | ) 36 | ) 37 | from cards 38 | where 39 | queue >= 0 -------------------------------------------------------------------------------- /rslib/src/storage/deck/get_deck.sql: -------------------------------------------------------------------------------- 1 | select 2 | id, 3 | name, 4 | mtime_secs, 5 | usn, 6 | common, 7 | kind 8 | from decks -------------------------------------------------------------------------------- /rslib/src/storage/deck/missing-decks.sql: -------------------------------------------------------------------------------- 1 | select 2 | distinct did 3 | from cards 4 | where 5 | did not in ( 6 | select 7 | id 8 | from decks 9 | ); -------------------------------------------------------------------------------- /rslib/src/storage/deck/update_deck.sql: -------------------------------------------------------------------------------- 1 | insert 2 | or replace into decks (id, name, mtime_secs, usn, common, kind) 3 | values 4 | (?, ?, ?, ?, ?, ?) -------------------------------------------------------------------------------- /rslib/src/storage/deckconf/add.sql: -------------------------------------------------------------------------------- 1 | insert into deck_config (id, name, mtime_secs, usn, config) 2 | values 3 | ( 4 | ( 5 | case 6 | when ?1 in ( 7 | select 8 | id 9 | from deck_config 10 | ) then ( 11 | select 12 | max(id) + 1 13 | from deck_config 14 | ) 15 | else ?1 16 | end 17 | ), 18 | ?, 19 | ?, 20 | ?, 21 | ? 22 | ); -------------------------------------------------------------------------------- /rslib/src/storage/deckconf/add_or_update.sql: -------------------------------------------------------------------------------- 1 | insert 2 | or replace into deck_config (id, name, mtime_secs, usn, config) 3 | values 4 | (?, ?, ?, ?, ?); -------------------------------------------------------------------------------- /rslib/src/storage/deckconf/get.sql: -------------------------------------------------------------------------------- 1 | select 2 | id, 3 | name, 4 | mtime_secs, 5 | usn, 6 | config 7 | from deck_config 8 | -------------------------------------------------------------------------------- /rslib/src/storage/deckconf/update.sql: -------------------------------------------------------------------------------- 1 | update deck_config 2 | set 3 | name = ?, 4 | mtime_secs = ?, 5 | usn = ?, 6 | config = ? 7 | where 8 | id = ?; -------------------------------------------------------------------------------- /rslib/src/storage/graves/add.sql: -------------------------------------------------------------------------------- 1 | insert 2 | or ignore into graves (usn, oid, type) 3 | values 4 | (?, ?, ?) -------------------------------------------------------------------------------- /rslib/src/storage/note/add.sql: -------------------------------------------------------------------------------- 1 | insert into notes ( 2 | id, 3 | guid, 4 | mid, 5 | mod, 6 | usn, 7 | tags, 8 | flds, 9 | sfld, 10 | csum, 11 | flags, 12 | data 13 | ) 14 | values 15 | ( 16 | ( 17 | case 18 | when ?1 in ( 19 | select 20 | id 21 | from notes 22 | ) then ( 23 | select 24 | max(id) + 1 25 | from notes 26 | ) 27 | else ?1 28 | end 29 | ), 30 | ?, 31 | ?, 32 | ?, 33 | ?, 34 | ?, 35 | ?, 36 | ?, 37 | ?, 38 | 0, 39 | "" 40 | ) -------------------------------------------------------------------------------- /rslib/src/storage/note/add_or_update.sql: -------------------------------------------------------------------------------- 1 | insert 2 | or replace into notes ( 3 | id, 4 | guid, 5 | mid, 6 | mod, 7 | usn, 8 | tags, 9 | flds, 10 | sfld, 11 | csum, 12 | flags, 13 | data 14 | ) 15 | values 16 | ( 17 | ?, 18 | ?, 19 | ?, 20 | ?, 21 | ?, 22 | ?, 23 | ?, 24 | ?, 25 | ?, 26 | 0, 27 | "" 28 | ) -------------------------------------------------------------------------------- /rslib/src/storage/note/get.sql: -------------------------------------------------------------------------------- 1 | select 2 | id, 3 | guid, 4 | mid, 5 | mod, 6 | usn, 7 | tags, 8 | flds 9 | from notes -------------------------------------------------------------------------------- /rslib/src/storage/note/is_orphaned.sql: -------------------------------------------------------------------------------- 1 | select 2 | count(id) = 0 3 | from cards 4 | where 5 | nid = ?; -------------------------------------------------------------------------------- /rslib/src/storage/note/update.sql: -------------------------------------------------------------------------------- 1 | update notes 2 | set 3 | guid = ?, 4 | mid = ?, 5 | mod = ?, 6 | usn = ?, 7 | tags = ?, 8 | flds = ?, 9 | sfld = ?, 10 | csum = ? 11 | where 12 | id = ? -------------------------------------------------------------------------------- /rslib/src/storage/notetype/add_notetype.sql: -------------------------------------------------------------------------------- 1 | insert into notetypes (id, name, mtime_secs, usn, config) 2 | values 3 | ( 4 | ( 5 | case 6 | when ?1 in ( 7 | select 8 | id 9 | from notetypes 10 | ) then ( 11 | select 12 | max(id) + 1 13 | from notetypes 14 | ) 15 | else ?1 16 | end 17 | ), 18 | ?, 19 | ?, 20 | ?, 21 | ? 22 | ); -------------------------------------------------------------------------------- /rslib/src/storage/notetype/add_or_update.sql: -------------------------------------------------------------------------------- 1 | insert 2 | or replace into notetypes (id, name, mtime_secs, usn, config) 3 | values 4 | (?, ?, ?, ?, ?); -------------------------------------------------------------------------------- /rslib/src/storage/notetype/delete_cards_for_template.sql: -------------------------------------------------------------------------------- 1 | delete from cards 2 | where 3 | nid in ( 4 | select 5 | id 6 | from notes 7 | where 8 | mid = ? 9 | ) 10 | and ord = ?; -------------------------------------------------------------------------------- /rslib/src/storage/notetype/existing_cards.sql: -------------------------------------------------------------------------------- 1 | select 2 | id, 3 | nid, 4 | ord, 5 | -- original deck 6 | ( 7 | case 8 | odid 9 | when 0 then did 10 | else odid 11 | end 12 | ), 13 | -- new position if card is empty 14 | ( 15 | case 16 | type 17 | when 0 then ( 18 | case 19 | odue 20 | when 0 then max(0, due) 21 | else max(odue, 0) 22 | end 23 | ) 24 | else null 25 | end 26 | ) 27 | from cards c -------------------------------------------------------------------------------- /rslib/src/storage/notetype/field_names_for_notes.sql: -------------------------------------------------------------------------------- 1 | select 2 | distinct name 3 | from fields 4 | where 5 | ntid in ( 6 | select 7 | mid 8 | from notes 9 | where 10 | id in -------------------------------------------------------------------------------- /rslib/src/storage/notetype/get_fields.sql: -------------------------------------------------------------------------------- 1 | select 2 | ord, 3 | name, 4 | config 5 | from fields 6 | where 7 | ntid = ? 8 | order by 9 | ord -------------------------------------------------------------------------------- /rslib/src/storage/notetype/get_notetype.sql: -------------------------------------------------------------------------------- 1 | select 2 | id, 3 | name, 4 | mtime_secs, 5 | usn, 6 | config 7 | from notetypes 8 | -------------------------------------------------------------------------------- /rslib/src/storage/notetype/get_notetype_names.sql: -------------------------------------------------------------------------------- 1 | select 2 | id, 3 | name 4 | from notetypes -------------------------------------------------------------------------------- /rslib/src/storage/notetype/get_templates.sql: -------------------------------------------------------------------------------- 1 | select 2 | ord, 3 | name, 4 | mtime_secs, 5 | usn, 6 | config 7 | from templates 8 | where 9 | ntid = ? 10 | order by 11 | ord -------------------------------------------------------------------------------- /rslib/src/storage/notetype/get_use_counts.sql: -------------------------------------------------------------------------------- 1 | select 2 | nt.id, 3 | nt.name, 4 | ( 5 | select 6 | count(*) 7 | from notes n 8 | where 9 | nt.id = n.mid 10 | ) 11 | from notetypes nt 12 | order by 13 | nt.name -------------------------------------------------------------------------------- /rslib/src/storage/notetype/update_fields.sql: -------------------------------------------------------------------------------- 1 | insert into fields (ntid, ord, name, config) 2 | values 3 | (?, ?, ?, ?); -------------------------------------------------------------------------------- /rslib/src/storage/notetype/update_notetype_config.sql: -------------------------------------------------------------------------------- 1 | insert 2 | or replace into notetype_config (ntid, config) 3 | values 4 | (?, ?) -------------------------------------------------------------------------------- /rslib/src/storage/notetype/update_notetype_core.sql: -------------------------------------------------------------------------------- 1 | insert 2 | or replace into notetypes (id, name, mtime_secs, usn, config) 3 | values 4 | (?, ?, ?, ?, ?) -------------------------------------------------------------------------------- /rslib/src/storage/notetype/update_templates.sql: -------------------------------------------------------------------------------- 1 | insert into templates (ntid, ord, name, mtime_secs, usn, config) 2 | values 3 | (?, ?, ?, ?, ?, ?) -------------------------------------------------------------------------------- /rslib/src/storage/revlog/add.sql: -------------------------------------------------------------------------------- 1 | insert 2 | or ignore into revlog ( 3 | id, 4 | cid, 5 | usn, 6 | ease, 7 | ivl, 8 | lastIvl, 9 | factor, 10 | time, 11 | type 12 | ) 13 | values 14 | (?, ?, ?, ?, ?, ?, ?, ?, ?) -------------------------------------------------------------------------------- /rslib/src/storage/revlog/fix_props.sql: -------------------------------------------------------------------------------- 1 | update revlog 2 | set 3 | ivl = min(max(round(ivl), -2147483648), 2147483647), 4 | lastIvl = min(max(round(lastIvl), -2147483648), 2147483647) 5 | where 6 | ivl != min(max(round(ivl), -2147483648), 2147483647) 7 | or lastIvl != min(max(round(lastIvl), -2147483648), 2147483647) -------------------------------------------------------------------------------- /rslib/src/storage/revlog/get.sql: -------------------------------------------------------------------------------- 1 | select 2 | id, 3 | cid, 4 | usn, 5 | ease, 6 | ivl, 7 | lastIvl, 8 | factor, 9 | time, 10 | type 11 | from revlog -------------------------------------------------------------------------------- /rslib/src/storage/tag/add.sql: -------------------------------------------------------------------------------- 1 | insert 2 | or ignore into tags (tag, usn) 3 | values 4 | (?, ?) -------------------------------------------------------------------------------- /rslib/src/storage/upgrades/schema11_downgrade.sql: -------------------------------------------------------------------------------- 1 | drop table config; 2 | drop table deck_config; 3 | drop table tags; 4 | drop table fields; 5 | drop table templates; 6 | drop table notetypes; 7 | drop table decks; 8 | drop index idx_cards_odid; 9 | drop index idx_notes_mid; 10 | update col 11 | set 12 | ver = 11; -------------------------------------------------------------------------------- /rslib/src/storage/upgrades/schema14_upgrade.sql: -------------------------------------------------------------------------------- 1 | create table deck_config ( 2 | id integer primary key not null, 3 | name text not null collate unicase, 4 | mtime_secs integer not null, 5 | usn integer not null, 6 | config blob not null 7 | ); 8 | create table config ( 9 | key text not null primary key, 10 | usn integer not null, 11 | mtime_secs integer not null, 12 | val blob not null 13 | ) without rowid; 14 | create table tags ( 15 | tag text not null primary key collate unicase, 16 | usn integer not null 17 | ) without rowid; 18 | update col 19 | set 20 | ver = 14; -------------------------------------------------------------------------------- /rslib/src/version.rs: -------------------------------------------------------------------------------- 1 | // Copyright: Ankitects Pty Ltd and contributors 2 | // License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html 3 | 4 | use lazy_static::lazy_static; 5 | 6 | pub fn version() -> &'static str { 7 | include_str!("../../meta/version").trim() 8 | } 9 | 10 | pub fn buildhash() -> &'static str { 11 | include_str!("../../meta/buildhash").trim() 12 | } 13 | 14 | pub(crate) fn sync_client_version() -> &'static str { 15 | lazy_static! { 16 | static ref VER: String = format!( 17 | "anki,{} ({}),{}", 18 | version(), 19 | buildhash(), 20 | std::env::consts::OS 21 | ); 22 | } 23 | &VER 24 | } 25 | -------------------------------------------------------------------------------- /rslib/tests/support/ftl/ja/test.ftl: -------------------------------------------------------------------------------- 1 | valid-key = キー 2 | two-args-key = {$one}と{$two} 3 | -------------------------------------------------------------------------------- /rslib/tests/support/ftl/templates/test.ftl: -------------------------------------------------------------------------------- 1 | valid-key = a valid key 2 | only-in-english = not translated 3 | two-args-key = two args: {$one} and {$two} 4 | plural = You have {$hats -> 5 | [one] 1 hat 6 | *[other] {$hats} hats 7 | }. 8 | -------------------------------------------------------------------------------- /rslib/tests/support/mediacheck.anki2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Arthur-Milchior/anki/9e752b4c03dafc5173eb3474a14ed141be56d5fd/rslib/tests/support/mediacheck.anki2 -------------------------------------------------------------------------------- /rspy/.cargo/config: -------------------------------------------------------------------------------- 1 | [target.'cfg(target_os="macos")'] 2 | rustflags = ["-Clink-arg=-mmacosx-version-min=10.7"] 3 | -------------------------------------------------------------------------------- /rspy/.gitignore: -------------------------------------------------------------------------------- 1 | .build 2 | target 3 | Cargo.lock 4 | -------------------------------------------------------------------------------- /rspy/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "ankirspy" 3 | version = "2.1.28" # automatically updated 4 | edition = "2018" 5 | authors = ["Ankitects Pty Ltd and contributors "] 6 | license = "AGPL-3.0-or-later" 7 | description = "Anki's Rust library code Python bindings" 8 | readme = "README.md" 9 | 10 | [dependencies] 11 | anki = { path = "../rslib" } 12 | tokio = "0.2.11" 13 | 14 | [dependencies.pyo3] 15 | version = "0.8.0" 16 | features = ["extension-module"] 17 | 18 | [lib] 19 | name = "ankirspy" 20 | crate-type = ["cdylib"] 21 | 22 | [patch.crates-io] 23 | hyper = { git = "https://github.com/ankitects/hyper.git", branch = "gai-cancel-panic" } 24 | -------------------------------------------------------------------------------- /rspy/FILES.md: -------------------------------------------------------------------------------- 1 | As the file with [same name in parent directory](../FILES.md), this 2 | document contains a succint description of the content of each file 3 | from this folder. 4 | 5 | This document contais the code allowing Python to call the rust 6 | back-end. The time lost by communicating being theoritically smaller 7 | than the time won by doing the computation in Python. 8 | 9 | As far as my experience is, it's not actually the case, at least when 10 | you need to do a lot of read query to the database. 11 | -------------------------------------------------------------------------------- /rspy/README.md: -------------------------------------------------------------------------------- 1 | To build from scratch, please see https://github.com/ankitects/anki 2 | -------------------------------------------------------------------------------- /rspy/requirements.txt: -------------------------------------------------------------------------------- 1 | maturin>=0.8.0 2 | -------------------------------------------------------------------------------- /rspy/rust-toolchain: -------------------------------------------------------------------------------- 1 | nightly-2020-02-27 2 | -------------------------------------------------------------------------------- /run: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -eu -o pipefail ${SHELLFLAGS} 4 | 5 | make -C $(dirname $0) run RUNFLAGS="$*" 6 | --------------------------------------------------------------------------------