diff --git a/.readme.rst b/.readme.rst
index 5ba7ff05..6f6e06a6 100644
--- a/.readme.rst
+++ b/.readme.rst
@@ -3,7 +3,7 @@
tqdm
====
-|PyPI-Versions| |PyPI-Status| |Conda-Forge-Status|
+|PyPI-Versions| |PyPI-Status| |Conda-Forge-Status| |Snapcraft|
|Build-Status| |Coverage-Status| |Branch-Coverage-Status| |Codacy-Grade| |Libraries-Rank| |PyPI-Downloads|
@@ -98,6 +98,15 @@ Latest Conda release
conda install -c conda-forge tqdm
+Latest Snapcraft release
+~~~~~~~~~~~~~~~~~~~~~~~~
+
+|Snapcraft|
+
+.. code:: sh
+
+ snap install tqdm
+
Changelog
---------
@@ -831,8 +840,10 @@ There are also many |GitHub-Contributions| which we are grateful for.
:target: https://pypi.org/project/tqdm
.. |PyPI-Versions| image:: https://img.shields.io/pypi/pyversions/tqdm.svg?logo=python&logoColor=white
:target: https://pypi.org/project/tqdm
-.. |Conda-Forge-Status| image:: https://img.shields.io/conda/v/conda-forge/tqdm.svg?label=conda-forge
+.. |Conda-Forge-Status| image:: https://img.shields.io/conda/v/conda-forge/tqdm.svg?label=conda-forge&logo=conda-forge
:target: https://anaconda.org/conda-forge/tqdm
+.. |Snapcraft| image:: https://img.shields.io/badge/snap-install-82BEA0.svg?logo=snapcraft
+ :target: https://snapcraft.io/tqdm
.. |Libraries-Rank| image:: https://img.shields.io/librariesio/sourcerank/pypi/tqdm.svg?logo=koding&logoColor=white
:target: https://libraries.io/pypi/tqdm
.. |Libraries-Dependents| image:: https://img.shields.io/librariesio/dependent-repos/pypi/tqdm.svg?logo=koding&logoColor=white
diff --git a/.snapcraft.yml b/.snapcraft.yml
index b58bc6b2..29aa6bea 100644
--- a/.snapcraft.yml
+++ b/.snapcraft.yml
@@ -1,18 +1,49 @@
name: tqdm
-version: '{version}'
-summary: A fast, extensible progress bar for Python and CLI
+summary: A fast, extensible CLI progress bar
description: |
- {description}
+ https://tqdm.github.io
+
+ `tqdm` means "progress" in Arabic (taqadum, تقدّم) and is an
+ abbreviation for "I love you so much" in Spanish (te quiero demasiado).
+
+ Instantly make your loops show a smart progress meter and stats - just
+ replace any pipe "`|`" with "`| tqdm |`", and you're done!
+
+ ```sh
+ $ seq 9999999 | tqdm --bytes | wc -l
+ 75.2MB [00:00, 217MB/s]
+ 9999999
+ $ 7z a -bd -r backup.7z docs/ | grep Compressing | \
+ tqdm --total $(find docs/ -type f | wc -l) --unit files >> backup.log
+ 100%|███████████████████████████████▉| 8014/8014 [01:37<00:00, 82.29files/s]
+ ```
+
+ Overhead is low -- about 60ns per iteration.
+
+ In addition to its low overhead, `tqdm` uses smart algorithms to predict
+ the remaining time and to skip unnecessary iteration displays, which
+ allows for a negligible overhead in most cases.
+
+ `tqdm` works on any platform (Linux, Windows, Mac, FreeBSD, NetBSD,
+ Solaris/SunOS), in any console or in a GUI, and is also friendly with
+ IPython/Jupyter notebooks.
+
+ `tqdm` does not require any dependencies, just
+ an environment supporting `carriage return \r` and
+ `line feed \n` control characters.
+adopt-info: tqdm
grade: stable
confinement: strict
base: core18
icon: {icon}
+license: MPL-2.0
parts:
tqdm:
plugin: python
python-version: python3
source: {source}
source-commit: {commit}
+ parse-info: [setup.py]
apps:
tqdm:
command: bin/tqdm
diff --git a/DEMO.ipynb b/DEMO.ipynb
index b3b66bea..f8ada8a6 100644
--- a/DEMO.ipynb
+++ b/DEMO.ipynb
@@ -7,8 +7,8 @@
"
tqdm
\n",
"\n",
"\n",
- "[![PyPI-Versions](https://img.shields.io/pypi/pyversions/tqdm.svg?logo=python&logoColor=white)](https://pypi.org/project/tqdm)|[![PyPI-Status](https://img.shields.io/pypi/v/tqdm.svg)](https://pypi.org/project/tqdm)|[![Conda-Forge-Status](https://img.shields.io/conda/v/conda-forge/tqdm.svg?label=conda-forge)](https://anaconda.org/conda-forge/tqdm)\n",
- "-|-|-\n",
+ "[![PyPI-Versions](https://img.shields.io/pypi/pyversions/tqdm.svg?logo=python&logoColor=white)](https://pypi.org/project/tqdm)|[![PyPI-Status](https://img.shields.io/pypi/v/tqdm.svg)](https://pypi.org/project/tqdm)|[![Conda-Forge-Status](https://img.shields.io/conda/v/conda-forge/tqdm.svg?label=conda-forge&logo=conda-forge)](https://anaconda.org/conda-forge/tqdm)|[![Snapcraft](https://img.shields.io/badge/snap-install-82BEA0.svg?logo=snapcraft)](https://snapcraft.io/tqdm)\n",
+ "-|-|-|-\n",
"\n",
"[![Build-Status](https://img.shields.io/travis/tqdm/tqdm/master.svg?logo=travis)](https://travis-ci.org/tqdm/tqdm)|[![Coverage-Status](https://coveralls.io/repos/tqdm/tqdm/badge.svg?branch=master)](https://coveralls.io/github/tqdm/tqdm)|[![Branch-Coverage-Status](https://codecov.io/gh/tqdm/tqdm/branch/master/graph/badge.svg)](https://codecov.io/gh/tqdm/tqdm)|[![Codacy-Grade](https://api.codacy.com/project/badge/Grade/3f965571598f44549c7818f29cdcf177)](https://www.codacy.com/app/tqdm/tqdm?utm_source=github.com&utm_medium=referral&utm_content=tqdm/tqdm&utm_campaign=Badge_Grade)|[![Libraries-Rank](https://img.shields.io/librariesio/sourcerank/pypi/tqdm.svg?logo=koding&logoColor=white)](https://libraries.io/pypi/tqdm)|[![PyPI-Downloads](https://img.shields.io/pypi/dm/tqdm.svg?label=pypi%20downloads&logo=python&logoColor=white)](https://pypi.org/project/tqdm)\n",
"-|-|-|-|-|-\n",
diff --git a/README.rst b/README.rst
index ca15491e..7e0984c2 100644
--- a/README.rst
+++ b/README.rst
@@ -3,7 +3,7 @@
tqdm
====
-|PyPI-Versions| |PyPI-Status| |Conda-Forge-Status|
+|PyPI-Versions| |PyPI-Status| |Conda-Forge-Status| |Snapcraft|
|Build-Status| |Coverage-Status| |Branch-Coverage-Status| |Codacy-Grade| |Libraries-Rank| |PyPI-Downloads|
@@ -98,6 +98,15 @@ Latest Conda release
conda install -c conda-forge tqdm
+Latest Snapcraft release
+~~~~~~~~~~~~~~~~~~~~~~~~
+
+|Snapcraft|
+
+.. code:: sh
+
+ snap install tqdm
+
Changelog
---------
@@ -940,8 +949,10 @@ There are also many |GitHub-Contributions| which we are grateful for.
:target: https://pypi.org/project/tqdm
.. |PyPI-Versions| image:: https://img.shields.io/pypi/pyversions/tqdm.svg?logo=python&logoColor=white
:target: https://pypi.org/project/tqdm
-.. |Conda-Forge-Status| image:: https://img.shields.io/conda/v/conda-forge/tqdm.svg?label=conda-forge
+.. |Conda-Forge-Status| image:: https://img.shields.io/conda/v/conda-forge/tqdm.svg?label=conda-forge&logo=conda-forge
:target: https://anaconda.org/conda-forge/tqdm
+.. |Snapcraft| image:: https://img.shields.io/badge/snap-install-82BEA0.svg?logo=snapcraft
+ :target: https://snapcraft.io/tqdm
.. |Libraries-Rank| image:: https://img.shields.io/librariesio/sourcerank/pypi/tqdm.svg?logo=koding&logoColor=white
:target: https://libraries.io/pypi/tqdm
.. |Libraries-Dependents| image:: https://img.shields.io/librariesio/dependent-repos/pypi/tqdm.svg?logo=koding&logoColor=white
diff --git a/paper.md b/paper.md
new file mode 100644
index 00000000..f25eb5dd
--- /dev/null
+++ b/paper.md
@@ -0,0 +1,502 @@
+---
+title: '`tqdm`: A Fast, Extensible Progress Meter for Python and CLI'
+tags:
+ - progressbar
+ - progressmeter
+ - progress-bar
+ - meter
+ - rate
+ - eta
+ - console
+ - terminal
+ - time
+ - progress
+ - bar
+ - gui
+ - python
+ - parallel
+ - cli
+ - utilities
+authors:
+ - name: Casper O da Costa-Luis
+ orcid: 0000-0002-7211-1557
+date: 16 February 2019
+references:
+ - id: tqdm-ar
+ type: book
+ author:
+ - family: Alī Ġūl
+ given: Maḥmūd
+ title: 'Early Southern Arabian Languages and Classical Arabic Sources: A Critical Examination of Literary and Lexicographical Sources by Comparison with the Inscriptions'
+ publisher: Yarmouk University
+ publisher-place: Irbid
+ issued:
+ - year: '1993'
+ - id: tqdm-es
+ type: webpage
+ title: '¿Lenguaje sms que significa esto?'
+ URL: https://es.answers.yahoo.com/question/index?qid=20090405052137AAF2YBo&guccounter=1
+ author:
+ - literal: Yahoo Answers
+ - id: pypi
+ type: webpage
+ issued:
+ - year: '2019'
+ author:
+ - literal: Python Package Index (PyPI)
+ publisher: Python Software Foundation
+ title: tqdm
+ URL: https://pypi.org/project/tqdm/
+ - id: conda
+ type: webpage
+ author:
+ - literal: Anaconda
+ issued:
+ - year: '2019'
+ title: '`tqdm` :: Anaconda Cloud'
+ URL: https://anaconda.org/conda-forge/tqdm
+ - id: snapcraft
+ type: webpage
+ issued:
+ - year: '2019'
+ author:
+ - literal: Snapcraft
+ title: 'Installing `tqdm` for Linux using the Snap Store'
+ URL: https://snapcraft.io/tqdm
+ - id: zenodo
+ type: article
+ issued:
+ - year: '2019'
+ author:
+ - family: da Costa-Luis
+ given: Casper O.
+ - literal: '`tqdm` developers'
+ title: '`tqdm` stable'
+ publisher: Zenodo
+ DOI: 10.5281/zenodo.595120
+ - id: stdout
+ type: webpage
+ issued:
+ - year: '2019'
+ author:
+ - literal: Stack Overflow
+ title: Why is printing to stdout so slow? Can it be sped up?
+ URL: https://stackoverflow.com/questions/3857052/why-is-printing-to-stdout-so-slow-can-it-be-sped-up
+ - id: pypi-downloads
+ type: webpage
+ issued:
+ - year: '2019'
+ author:
+ - literal: Python Packaging Authority (PyPA)
+ publisher: Python Software Foundation
+ title: 'Analyzing PyPI package downloads — Python Packaging User Guide'
+ URL: https://packaging.python.org/guides/analyzing-pypi-package-downloads/
+ - id: 'keras'
+ type: webpage
+ issued:
+ - year: '2019'
+ author:
+ - given: Ben
+ title: 'Keras integration with `tqdm` progress bars'
+ URL: https://github.com/bstriner/keras-tqdm
+ - id: tqdm-results
+ type: webpage
+ issued:
+ - year: '2019'
+ author:
+ - literal: GitHub
+ title: '`tqdm` Code Results'
+ URL: https://github.com/search?q=tqdm&type=Code
+ - id: tqdm-dependents
+ type: webpage
+ issued:
+ - year: '2019'
+ author:
+ - literal: GitHub
+ title: '`tqdm` dependents'
+ URL: https://github.com/tqdm/tqdm/network/dependents
+ - id: lib-io
+ type: webpage
+ issued:
+ - year: '2019'
+ author:
+ - literal: Libraries.io
+ title: '`tqdm` on PyPI'
+ URL: https://libraries.io/pypi/tqdm
+ - id: sourcerank
+ type: webpage
+ issued:
+ - year: '2019'
+ author:
+ - literal: Libraries.io
+ title: SourceRank Breakdown for tqdm
+ URL: https://libraries.io/pypi/tqdm/sourcerank
+ - id: sourcerank-descending
+ type: webpage
+ issued:
+ - year: '2019'
+ author:
+ - literal: Libraries.io
+ title: 'Libraries - The Open Source Discovery Service'
+ URL: https://libraries.io/search?order=desc&platforms=PyPI&sort=rank
+ - id: stars
+ type: webpage
+ issued:
+ - year: '2019'
+ author:
+ - literal: GitHub
+ title: '`tqdm` Stargazers'
+ URL: https://github.com/tqdm/tqdm/stargazers
+ - id: stars-hist
+ type: webpage
+ issued:
+ - year: '2019'
+ author:
+ - literal: '`timqian`'
+ title: 'Star history'
+ URL: https://timqian.com/star-history/#tqdm/tqdm
+ - id: trend-hist
+ type: webpage
+ issued:
+ - year: '2018'
+ - month: '6'
+ - day: '19'
+ author:
+ - family: Takizawa
+ given: Nihey
+ title: 'GitHub Trending History'
+ URL: https://github.com/nihey/trending-history/blob/master/histories/Python.md
+ - id: hits
+ type: webpage
+ issued:
+ - year: '2019'
+ title: tqdm hits
+ URL: https://caspersci.uk.to/cgi-bin/hits.cgi?q=tqdm&a=plot
+ author:
+ - family: da Costa-Luis
+ given: Casper O.
+ - id: miller
+ type: book
+ issued:
+ - year: '2017'
+ author:
+ - family: Miller
+ given: Preston
+ - family: Bryce
+ given: Chapin
+ title: 'Python Digital Forensics Cookbook: Effective Python recipes for digital investigations'
+ publisher: 'Packt Publishing Ltd'
+ ISBN: '9781783987474'
+ - id: boxel
+ type: book
+ issued:
+ - year: '2017'
+ author:
+ - family: 'Van Boxel'
+ given: Dan
+ title: 'Hands-On Deep Learning with TensorFlow'
+ publisher: 'Packt Publishing'
+ ISBN: 9781787125827
+ - id: nandy
+ type: book
+ issued:
+ - year: '2018'
+ author:
+ - family: Nandy
+ given: Abhishek
+ - family: Biswas
+ given: Manisha
+ title: 'Reinforcement Learning with Keras, TensorFlow, and ChainerRL'
+ container-title: 'Reinforcement Learning : With Open AI, TensorFlow and Keras Using Python'
+ publisher: Apress
+ ISBN: 9781484232859
+ page: 129--153
+ DOI: 10.1007/978-1-4842-3285-9_5
+ - id: stein
+ type: article-journal
+ issued:
+ - year: '2019'
+ author:
+ - family: Stein
+ given: Helge S.
+ - family: Guevarra
+ given: Dan
+ - family: Newhouse
+ given: Paul F.
+ - family: Soedarmadji
+ given: Edwin
+ - family: Gregoire
+ given: John M.
+ title: Machine learning of optical properties of materials -- predicting spectra from images and images from spectra
+ container-title: Chemical Science
+ volume: 10
+ issue: 1
+ pages: 47--55
+ DOI: 10.1039/C8SC03077D
+ - id: cook
+ type: article-journal
+ issued:
+ - year: '2018'
+ author:
+ - family: Cook
+ given: Neil J.
+ - family: Scholz
+ given: Aleks
+ - family: Jayawardhana
+ given: Ray
+ title: 'Very Low-mass Stars and Brown Dwarfs in Upper Scorpius Using Gaia DR1: Mass Function, Disks, and Kinematics'
+ container-title: The Astronomical Journal
+ volume: 154
+ issue: 6
+ page: 256
+ DOI: 10.3847/1538-3881/aa9751
+ URL: https://arxiv.org/abs/1710.11625
+ - id: madhikar
+ type: article-journal
+ issued:
+ - year: '2018'
+ author:
+ - family: Madhikar
+ given: Pranav
+ - family: Åström
+ given: Jan
+ - family: Westerholm
+ given: Jan
+ - family: Karttunen
+ given: Mikko
+ title: 'CellSim3D: GPU accelerated software for simulations of cellular growth and division in three dimensions'
+ container-title: Computer Physics Communications
+ volume: 232
+ page: 206--213
+ DOI: 10.1016/j.cpc.2018.05.024
+ - id: palmer
+ type: article-journal
+ issued:
+ - year: '2018'
+ author:
+ - family: Palmer
+ given: Geraint I.
+ - family: Knight
+ given: Vincent A.
+ - family: Harper
+ given: Paul R.
+ - family: Hawa
+ given: Asyl L.
+ title: 'Ciw: An open-source discrete event simulation library'
+ container-title: Journal of Simulation
+ page: 1--15
+ DOI: 10.1080/17477778.2018.1473909
+ - id: knight
+ type: article-journal
+ issued:
+ - year: '2016'
+ author:
+ - family: Knight
+ given: Vincent
+ - family: Campbell
+ given: Owen
+ - family: Harper
+ given: Marc
+ - family: Langner
+ given: Karol
+ - family: Campbell
+ given: James
+ - family: Campbell
+ given: Thomas
+ - family: Carney
+ given: Alex
+ - family: Chorley
+ given: Martin
+ - family: Davidson-Pilon
+ given: Cameron
+ - family: Glass
+ given: Kristian
+ - family: Glynatsi
+ given: Nikoleta
+ - family: Ehrlich
+ given: Tomáš
+ - family: Jones
+ given: Martin
+ - family: Koutsovoulos
+ given: Georgios
+ - family: Tibble
+ given: Holly
+ - family: Jochen
+ given: Müller
+ - family: Palmer
+ given: Geraint
+ - family: Petunov
+ given: Piotr
+ - family: Slavin
+ given: Paul
+ - family: Standen
+ given: Timothy
+ - family: Visintini
+ given: Luis
+ - family: Molden
+ given: Karl
+ title: An open reproducible framework for the study of the iterated prisoner's dilemma
+ container-title: Journal of Open Research Software
+ volume: 4
+ DOI: 10.5334/jors.125
+ URL: https://arxiv.org/abs/1604.00896
+ ISSN: 2049-9647
+ - id: travis
+ type: webpage
+ issued:
+ - year: '2019'
+ author:
+ - literal: Travis CI
+ title: tqdm/tqdm build status
+ URL: https://travis-ci.org/tqdm/tqdm
+ - id: code-review
+ type: webpage
+ issued:
+ - year: '2018'
+ author:
+ - literal: Wikipedia
+ title: List of tools for code review
+ URL: https://en.wikipedia.org/wiki/List_of_tools_for_code_review
+ - id: asv
+ type: webpage
+ issued:
+ - year: '2019'
+ author:
+ - literal: '`tqdm` developers'
+ title: airspeed velocity
+ URL: https://tqdm.github.io/tqdm/
+ - id: licence
+ type: webpage
+ issued:
+ - year: '2019'
+ author:
+ - literal: '`tqdm` developers'
+ title: tqdm Licence
+ URL: https://github.com/tqdm/tqdm/blob/master/LICENCE
+ publisher: GitHub
+---
+![](logo.png)
+
+# Summary
+
+**`tqdm`** is a progress bar library designed to be fast and extensible. It is
+written in Python, though ports in other languages are available. `tqdm` means
+**progress** in Arabic (*taqadum*, تقدّم) and is an abbreviation for
+**I love you so much** in Spanish (*te quiero demasiado*) [@tqdm-ar;@tqdm-es].
+
+# Features
+
+Exhaustive documentation may be found on the project's [home
+page](https://github.com/tqdm/tqdm/#documentation).
+
+The package supports both Python versions 2 and 3, and is available for download
+via `conda` [@conda], `pip` [@pypi], `snap` [@snapcraft], and *Zenodo*
+[@zenodo].
+
+The two basic use cases are within Python code and within a Command-line
+interface:
+
+## Python Iterable Wrapper
+
+`tqdm`'s primary (and original) use is as a wrapper around Python iterables. A
+simple case would be:
+
+```python
+from tqdm import tqdm
+from time import sleep
+for i in tqdm(range(100)):
+ sleep(0.1)
+100%|█████████████████████████████████████████| 100/100 [00:10<00:00, 9.95it/s]
+```
+
+Supported features include:
+
+- Display customisation via arguments such as `desc`, `postfix` and `bar_format`
+- Automatic limiting of display updates to avoid slowing down due to excessive
+ iteration rates [@stdout]
+- Automatic detection of console width to fill the display
+- Automatic use of Unicode to render smooth-filling progress bars on supported
+ terminals
+- Support for custom rendering frontends, including:
+ * Command-line interface
+ * Jupyter HTML notebooks
+ * `matplotlib`
+- Support for custom hooks/callbacks, including:
+ * `pandas`
+ * `keras` [@keras]
+
+## Command-line Interface
+
+A Command-line interface is also provided, where `tqdm` may be used a pipe:
+
+```sh
+ # count lines of text in all *.txt files
+$ cat *.txt | wc -l
+1075075
+ # same but with continuously updating progress information
+$ cat *.txt | python3 -m tqdm --unit loc --unit_scale | wc -l
+1.08Mloc [00:07, 142kloc/s]
+ # same if `total` is known
+$ cat *.txt | python3 -m tqdm --unit loc --unit_scale --total 1075075 | wc -l
+100%|█████████████████████████████████████| 1.08/1.08M [00:07<00:00, 142kloc/s]
+1075075
+```
+
+# Popularity
+
+As of January 2019, `tqdm` has received:
+
+- over 20 million downloads [@pypi-downloads];
+- over 315 thousand code inclusions [@tqdm-results];
+ * over 23 thousand dependent repositories [@tqdm-dependents];
+ * 7 thousand dependent libraries [@lib-io];
+- A SourceRank of 22 [@sourcerank], in the world's top 20 Python packages as of
+ early 2019 [@sourcerank-descending];
+- 9 thousand stars on GitHub [@stars;@stars-hist], and the top trending
+ repository during a period in December 2015 [@trend-hist];
+- 500 thousand documentation hits [@hits];
+- Usage in several textbooks [@miller;@boxel;@nandy] and peer-reviewed
+ scientific publications [@stein;@cook;@madhikar;@palmer;@knight].
+
+## References in Blogs and Public Media
+
+- A `tqdm` release becomes [Zenodo's 1 millionth
+ record](https://twitter.com/WikimediaItalia/status/914448810117545985)
+- [A Hymn to Progress](http://www.metafilter.com/161265/An-alternative-to-an-eternally-spinning-wheel#6644017),
+ a poem or song with suggested tune of *For those in Peril on the C*,
+ where "C" is a pun on *Sea* and the *C programming language*
+- [My top 5 'new' Python modules of
+ 2015](http://blog.rtwilson.com/my-top-5-new-python-modules-of-2015/)
+- [`tqdm`, `imageio` and `Seaborn`: Three essential python modules
+ (Nov 2018)](https://dominikschmidt.xyz/python-modules-tqdm-imageio-seaborn/)
+-
+-
+-
+
+## Code Metrics
+
+- Unit tested on Travis CI [@travis]
+- Style and security checked on
+ [Codacy](https://app.codacy.com/project/tqdm/tqdm/dashboard) [@code-review]
+- Code coverage reported on [Coveralls](https://coveralls.io/github/tqdm/tqdm)
+ and [Codecov](https://codecov.io/gh/tqdm/tqdm)
+- Valuated using the COCOMO model by [OpenHub](https://www.openhub.net/p/tqdm)
+- Performance tested against regression [@asv]
+
+# Licence
+
+`tqdm`'s source code is OSS, and may be cited using the DOI
+[10.5281/zenodo.595120](https://doi.org/10.5281/zenodo.595120). The primary
+maintainer [Casper da Costa-Luis](https://github.com/casperdcl) releases
+contributions under the terms of the MPLv2.0, while all other contributions are
+released under the terms of the MIT licence [@licence].
+
+# See also
+
+- Ports of [`tqdm` in other languages on
+ GitHub](https://github.com/search?q=tqdm&type=Repositories)
+ * [Official List of Ports](https://tqdm.github.io/ports/)
+- [Interactive demonstration of `tqdm` in a Jupyter
+ Notebook](https://notebooks.rmotr.com/demo/gh/tqdm/tqdm)
+
+# References