�
E��c� � � � d Z ddlmZ ddlZddlZddlZddlmZ ddlm Z ddlm
Z
ddlmZ ddlmZ dd lm
Z
dd
lmZ ddlmZ ddlmZ ddlZddlZdd
lmZ ddlmZ ddlmZ ddlZddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddl m!Z! ddl m"Z" ddl m#Z# dd
l mZ ddl m$Z$ ddl m%Z% ddl m&Z& ddl m'Z' ddl m(Z( ddl m)Z) ddl m*Z* ddl m+Z+ ddl,m-Z. ddl,mZ/ dd l0m1Z2 dd!l0m3Z4 dd"l5m6Z6 dd#l5m7Z7 dd$l5m8Z8 dd%l9m:Z; ddl9mZ< dd&l=m>Z> d'Z? ej@ eA� � ZBd(ejC d)dfd*�ZD dod+ejE d(ejC d,e
eeF d-e
eF d.e
e*jG d)e
e*jG fd/�ZHd(ejC d0e*jG d)eIfd1�ZJd(ejC d,eeF d0e*jG d)eeFe
e*jG f fd2�ZKd(ejC d.e*jG d)eeFe
e*jG f fd3�ZLd(ejC d,eeF d)ee
eF e
e*jG f fd4�ZMd(ejC d,eeF d-eFd)eeIe
e*jG f fd5�ZNd(ejC d,eeF d-eFd)ee
eF e
e*jG f fd6�ZO ed7� � ZPd8eeP d9eeP d)eeeP eeP f fd:�ZQd;eFd<eeF d)eFfd=�ZRd(ejC d>eeF d-eFd?eeF d)df
d@�ZS dpd(ejC dAe
ejT dBe
eF d)eeeF eFf fdC�ZU dqd(ejC dEe
ejV d.e
e*jG dFeId)df
dG�ZW dpd(ejC dHe
eF dIe
eF dJe
eF d)df
dK�ZXd(ejC d)eIfdL�ZYd(ejC dHe
eF dMe
eF dIe
eF d)df
dN�ZZd(ejC d)ee!j[ e
ej\ f fdO�Z]d(ejC d)dfdP�Z^d(ejC dQe
ej_ dAe
ejT d)ejE fdR�Z`d(ejC dSe2ja d)e
eF fdT�Zbd(ejC dSe2ja d)e
eF fdU�Zcd(ejC dSe2ja d)e
eF fdV�Zdd(ejC dSe2ja d)e
eF fdW�Zed(ejC d.e
e*jG d)e
eF fdX�Zf dpd(ejC d+ejE d,eeF d.e
e*jG d)df
dY�Zgd(ejC dZe2ja d)e
eF fd[�Zhd(ejC d)ejC fd\�Zid(ejC d)dfd]�Zjd(ejC dZe2ja d)dfd^�Zkd(ejC dZe2ja d)e
eF fd_�Zld(ejC dZe2ja d)dfd`�Zmd(ejC dSe2ja d)dfda�Znd(ejC dSe2ja d)dfdb�Zod(ejC dSe2ja d)dfdc�Zpd(ejC dSe2ja d)dfdd�Zqd(ejC dSe2ja d)e
eF fde�Zrd(ejC dZe2ja d)e
eF fdf�Zsd(ejC d+ejE d)ee
eF e
eF e
eF f fdg�Ztd(ejC dZe2ja d.e*jG d)dfdh�Zud(ejC dZe2ja d)dfdi�Zvd(ejC dSe2ja d)dfdj�Zwd(ejC d)dfdk�Zxed(ejC d)e ee.jy e.jz f ddf fdl�� � Z{dpdme
eeF d)e
eeFe|f fdn�Z}dS )rzCertbot main entry point.� )�contextmanagerN)�cast)� Generator)�IO)�Iterable)�List)�Optional)�Tuple)�TypeVar)�Union)�client)�errors)�messages)�
configuration)�crypto_util)�
interfaces)�util)�account)�cert_manager)�cli)� constants)�eff)�hooks)�log)�renewal)�snap_config)�storage)�updater)�obj)�disco)� selection)�
filesystem)�misc)�os)�ops)�enhancementsz?User chose to cancel the operation and may reinvoke the client.�config�returnc � � | j dk sJ �| j s| j rdS t j t
j dd�� � dS )z�Potentially suggest a donation to support Certbot.
:param config: Configuration object
:type config: configuration.NamespaceConfig
:returns: `None`
:rtype: None
�renewNz�If you like Certbot, please consider supporting our work by:
* Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
* Donating to EFF: https://eff.org/donate-leF��pause)�verb�staging�quietr �atexit_register�display_util�notification�r' |