a ‚oe‚fã@sTdZddlmZddlZddlZddlmZddlmZddlmZddlm Z ddlm Z dd lm Z dd lm Z dd lm Z dd lmZdd lmZddlZddlmZddlmZddlmZddlmZddlmZdZddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.œZid/d0„e ¡Dƒ¥Zeed1œd2d3„ZGd4d5„d5ejeƒZ Gd6d7„d7e ƒZ!e!d8ƒZ"e!d9ƒZ#Gd:d;„d;ej$ƒZ%Gdd?„d?e ƒZ'e'd@ƒZ(e'dAƒZ)e'dBƒZ*e'dCƒZ+e'dDƒZ,e'dEƒZ-e'dFƒZ.e'dGƒZ/GdHdI„dIejƒZ0GdJdK„dKej$ƒZ1GdLdM„dMe1ƒZ2GdNdO„dOej$ƒZ3GdPdQ„dQƒZ4edRdSdT�Z5GdUdS„dSe3ƒZ6GdVdW„dWe6ƒZ7GdXdY„dYe6ƒZ8GdZd[„d[e2ƒZ9Gd\d]„d]e3ƒZ:Gd^d_„d_e1ƒZ;Gd`da„dae3ƒZGdfdg„dge2ƒZ?Gdhdi„diej$ƒZ@Gdjdk„dke2ƒZAGdldm„dmej$ƒZBGdndo„doe3ƒZCGdpdq„dqe2ƒZDGdrds„dseCƒZEdS)tzACME protocol messages.é)ÚHashableN)ÚAny)ÚDict)ÚIterator)ÚList)ÚMapping)ÚMutableMapping)ÚOptional)ÚTuple)ÚType)ÚTypeVar)Ú challenges)Úerrors)Úfields)Újws)Úutilzurn:ietf:params:acme:error:z4The request specified an account that does not existzOThe request specified a certificate to be revoked that has already been revokedz2The CSR is unacceptable (e.g., due to a short key)z1The client sent an unacceptable anti-replay noncez>The JWS was signed by a public key the server does not supportz;The revocation reason provided is not allowed by the serverz@The JWS was signed with an algorithm the server does not supportz\Certification Authority Authorization (CAA) records forbid the CA from issuing a certificatezBSpecific error conditions are indicated in the "subproblems" arrayz?The server could not connect to the client to verify the domainzAThere was a problem with a DNS query during identifier validationz4The server could not validate a DNSSEC signed domainz;Response received didn't match the challenge's requirementsz1The provided email for a registration was invalidz$The provided contact URI was invalidz!The request message was malformedz9The server will not issue certificates for the identifierzLThe request attempted to finalize an order that is not ready to be finalizedz,There were too many requests of a given typez(The server experienced an internal errorz=The server experienced a TLS error during domain verificationz)The client lacks sufficient authorizationz@A contact URL for an account used an unsupported protocol schemez*The server could not resolve a domain namez'An identifier is of an unsupported typez,The server requires external account binding)ZaccountDoesNotExistZalreadyRevokedZbadCSRZbadNonceZ badPublicKeyZbadRevocationReasonZbadSignatureAlgorithmZcaaZcompoundZ connectionÚdnsZdnssecZincorrectResponseZ invalidEmailZinvalidContactZ malformedZrejectedIdentifierZ orderNotReadyZ rateLimitedZserverInternalZtlsZ unauthorizedZunsupportedContactZ unknownHostZunsupportedIdentifierÚexternalAccountRequiredcCsi|]\}}t||“qS©)Ú ERROR_PREFIX)Ú.0ÚnameZdescrrú.C:\Program Files\Certbot\pkgs\acme\messages.pyÚ ;sr)ÚerrÚreturncCs"t|tƒr|jdurt|jvSdS)z#Check if argument is an ACME error.NF)Ú isinstanceÚErrorÚtypr)rrrrÚ is_acme_error@s rcs�eZdZUdZdZeZeedfe d<eddœ‡fdd„ Z edœd d „Z e edd œd d „ƒZ edœdd„Zeedœdd„Zedœdd„Z‡ZS)Ú _ConstantzACME constant.©rÚPOSSIBLE_NAMESN©rrcstƒ ¡||j|<||_dS©N)ÚsuperÚ__init__r"r©Úselfr©Ú __class__rrr&Ls  z_Constant.__init__©rcCs|jSr$r!©r(rrrÚto_partial_jsonQsz_Constant.to_partial_json©ÚjobjrcCs&||jvrt |j›d�¡‚|j|S)Nz not recognized)r"ÚjoseZDeserializationErrorÚ__name__©Úclsr/rrrÚ from_jsonTs z_Constant.from_jsoncCs|jj›d|j›d�S)Nú(ú))r*r1rr,rrrÚ__repr__Zsz_Constant.__repr__)ÚotherrcCst|t|ƒƒo|j|jkSr$)rÚtyper)r(r8rrrÚ__eq__]sz_Constant.__eq__cCst|j|jfƒSr$)Úhashr*rr,rrrÚ__hash__`sz_Constant.__hash__)r1Ú __module__Ú __qualname__Ú__doc__Ú __slots__ÚNotImplementedr"rÚstrÚ__annotations__r&r-Ú classmethodr4r7rÚboolr:Úintr<Ú __classcell__rrr)rr Gs r c@s&eZdZUdZiZeeefed<dS)ÚIdentifierTypezACME identifier type.r"N© r1r=r>r?r"rrBr rCrrrrrHds rHrZipc@s<eZdZUdZejdejd�Zee d<e d¡Z e e d<dS)Ú IdentifierzJACME identifier. :ivar IdentifierType typ: :ivar str value: r9©ÚdecoderrÚvalueN) r1r=r>r?r0ÚfieldrHr4rrCrMrBrrrrrJms rJc@seZdZUdZejdddd�Zeed<ejddd�Z eed<ejd dd�Z eed <ejd e j dd �Z ed ed <ejd dd�Zeeded <ejeeeefeddœdd„ƒZeeeddœdd„ƒZeeedœdd„ƒZeeedœdd„ƒZeeddœdd„Zedœdd„ZdS) raêACME error. https://datatracker.ietf.org/doc/html/rfc7807 Note: Although Error inherits from JSONObjectWithFields, which is immutable, we add mutability for Error to comply with the Python exception API. :ivar str typ: :ivar str title: :ivar str detail: :ivar Identifier identifier: :ivar tuple subproblems: An array of ACME Errors which may be present when the CA returns multiple errors related to the same request, `tuple` of `Error`. r9Tz about:blank©Ú omitemptyÚdefaultrÚtitle©rPÚdetailÚ identifier©rLrPrJÚ subproblems)r.©rMrcCstdd„|DƒƒS)Ncss|]}t |¡VqdSr$)rr4)rÚ subproblemrrrÚ “óz$Error.subproblems..©Útuple©rMrrrrW‘szError.subproblems)ÚcodeÚkwargsrcKs.|tvrtd|ƒ‚t|}|fd|i|¤ŽS)zœCreate an Error instance with an ACME Error code. :str code: An ACME error code, like 'dnssec'. :kwargs: kwargs to pass to Error. z4The supplied code: %s is not a known ACME error coder)Ú ERROR_CODESÚ ValueErrorr)r3r_r`rrrrÚ with_code•s ÿzError.with_coder+cCs t |j¡S)z�Hardcoded error description based on its type. :returns: Description if standard ACME error or ``None``. :rtype: str )ÚERROR_TYPE_DESCRIPTIONSÚgetrr,rrrÚ description¥szError.descriptioncCs(t|jƒjddd�d}|tvr$|SdS)z¥ACME error code. Basically self.typ without the ERROR_PREFIX. :returns: error code if standard ACME code or ``None``. :rtype: str ú:é)ÚmaxsplitéÿÿÿÿN)rBrÚrsplitra)r(r_rrrr_¯s z Error.codeN)rrMrcCst |||¡Sr$)ÚobjectÚ __setattr__)r(rrMrrrrm¿szError.__setattr__cCstd dd„|j|j|j|jfDƒ¡ ¡}|jrBd|jj›d�|}|jrpt |jƒdkrp|jD]}|d|›�7}q\|S)Ns :: css"|]}|dur| dd¡VqdS)NÚasciiÚbackslashreplace©Úencode)rÚpartrrrrZÃsþz Error.__str__..z Problem for z: rÚ ) ÚjoinrrfrTrRÚdecoderUrMrWÚlen)r(ÚresultrYrrrÚ__str__Âs þ  z Error.__str__)r1r=r>r?r0rNrrBrCrRrTrJr4rUr rWr rLrrrrDrcÚpropertyrfr_rmrxrrrrrxs$ ÿ" rc@s&eZdZUdZiZeeefed<dS)ÚStatuszACME "status" field.r"NrIrrrrrzÏs rzÚunknownÚpendingZ processingZvalidZinvalidZrevokedZreadyZ deactivatedc@sŒeZdZdZGdd„dejƒZeee fddœdd„Z ee dœd d „Z ee dœd d „Z e ee fd œdd„Zeeee fddœdd„ƒZdS)Ú DirectoryzmDirectory. Directory resources must be accessed by the exact field name in RFC8555 (section 9.7.5). cs¾eZdZUdZejddd�Zeed<ejddd�Z eed<ejddd�Z e eed<ejd dd�Z e ed <ed d œ‡fd d„ Zeedœdd„ƒZeedœ‡fdd„ Zeedœdd„Z‡ZS)zDirectory.MetazDirectory Meta.ZtermsOfServiceTrSÚ_terms_of_serviceÚwebsiteZ caaIdentitiesÚcaa_identitiesrÚexternal_account_requiredN©r`rc s,‡fdd„| ¡Dƒ}tƒjfi|¤ŽdS)Ncsi|]\}}ˆ |¡|“qSr©Ú_internal_name©rÚkÚvr,rrrìr[z+Directory.Meta.__init__..©Úitemsr%r&©r(r`r)r,rr&ëszDirectory.Meta.__init__r+cCs|jS)zURL for the CA TOS)r~r,rrrÚterms_of_serviceïszDirectory.Meta.terms_of_servicec#s.tƒ ¡D]}|dkr"|dd…n|Vq dS)Nr~rh©r%Ú__iter__r'r)rrr�ôszDirectory.Meta.__iter__r#cCs|dkrd|S|S)Nr‹Ú_rr'rrrr„úszDirectory.Meta._internal_name)r1r=r>r?r0rNr~rBrCrr€rr�rErr&ryr‹rr�r„rGrrr)rÚMetaäs r�Nr.cCs ||_dSr$)Ú_jobj©r(r/rrrr&ýszDirectory.__init__r#c Cs@z ||WSty:}ztt|ƒƒ‚WYd}~n d}~00dSr$)ÚKeyErrorÚAttributeErrorrB)r(rÚerrorrrrÚ __getattr__s zDirectory.__getattr__cCs4z |j|WSty.td|›d�ƒ‚Yn0dS)NzDirectory field "z " not found)r�r’r'rrrÚ __getitem__s  zDirectory.__getitem__r+cCst |jdd„¡S)NcSs|Sr$r)r†rrrÚ r[z+Directory.to_partial_json..)rZmap_keysr�r,rrrr- szDirectory.to_partial_jsoncCs |j | di¡¡|d<||ƒS)NÚmeta)r�r4Úpopr2rrrr4szDirectory.from_json)r1r=r>r?r0ÚJSONObjectWithFieldsr�rrBrr&r•r–rr-rDrr4rrrrr}Þsr}c@s$eZdZUdZe d¡Zded<dS)ÚResourcezOACME Resource. :ivar acme.messages.ResourceBody body: Resource body. ÚbodyÚ ResourceBodyN)r1r=r>r?r0rNrœrCrrrrr›s r›c@s$eZdZUdZe d¡Zeed<dS)ÚResourceWithURIzKACME Resource with URI. :ivar str uri: Location of the resource. ÚuriN) r1r=r>r?r0rNrŸrBrCrrrrržs ržc@seZdZdZdS)r�zACME Resource Body.N©r1r=r>r?rrrrr�'sr�c@s4eZdZdZeejeeee ee fdœdd„ƒZ dS)ÚExternalAccountBindingzACME External Account Binding)Úaccount_public_keyÚkidÚhmac_keyÚ directoryrc CsRt | ¡¡ ¡}tj |¡}|d}tj  |tj j |d�tj j d||¡}| ¡S)zLCreate External Account Binding Resource from contact details, kid and hmac.Z newAccount)ÚkeyN)ÚjsonÚdumpsr-rqr0Zb64Z b64decoderZJWSÚsignZjwkZJWKOctZjwaZHS256) r3r¢r£r¤r¥Zkey_jsonZdecoded_hmac_keyÚurlZeabrrrÚ from_data.s þz ExternalAccountBinding.from_dataN) r1r=r>r?rDr0ÚJWKrBr}rrr«rrrrr¡+s  ÿr¡ÚGenericRegistrationÚ Registration)Úboundc s¼eZdZUdZejddejjd�Zeje d<ejdddd�Z e e dfe d<ejd dd �Z e e d <ejd dd �Zee d <ejd dd �Zee d <ejddd �Zee d<ejddd �Zee efe d<dZdZed*eeee ee eee efeedœdd„ƒZeddœ‡fdd„ Ze e e dfdœdd„Zee efee efdœdd „Zee efd!œ‡fd"d#„ Z ee efd!œ‡fd$d%„ Z!e"e e dfd!œd&d'„ƒZ#e"e e dfd!œd(d)„ƒZ$‡Z%S)+r®z»Registration Resource Body. :ivar jose.JWK key: Public key. :ivar tuple contact: Contact information following ACME spec, `tuple` of `str`. :ivar str agreement: r¦T©rPrLÚcontactrrO.Ú agreementrSÚstatusZtermsOfServiceAgreedÚterms_of_service_agreedZonlyReturnExistingÚonly_return_existingZexternalAccountBindingÚexternal_account_bindingztel:zmailto:N)r3ÚphoneÚemailr¶r`rc s„d|v}t| dd¡ƒ}|dur0| ˆj|¡|durV| ‡fdd„| d¡Dƒ¡|s^|rjt|ƒ|d<|rv||d<ˆfi|¤ŽS)a Create registration resource from contact details. The `contact` keyword being passed to a Registration object is meaningful, so this function represents empty iterables in its kwargs by passing on an empty `tuple`. r±rNcsg|]}ˆj|‘qSr)Ú email_prefix)rZmail©r3rrÚ pr[z*Registration.from_data..ú,r¶)Úlistr™ÚappendÚ phone_prefixÚextendÚsplitr])r3r·r¸r¶r`Zcontact_providedZdetailsrrºrr«[s zRegistration.from_datar‚c s8d|vr"|ddur"t |dd¡tƒjfi|¤ŽdS)z;Note if the user provides a value for the `contact` member.r±NÚ _add_contactT)rlrmr%r&rŠr)rrr&|szRegistration.__init__)Úprefixrcst‡fdd„|jDƒƒS)Nc3s(|] }| ˆ¡r|tˆƒd…VqdSr$)Ú startswithrv)rrT©rÃrrrZ„s ÿz/Registration._filter_contact..)r]r±)r(rÃrrÅrÚ_filter_contactƒs ÿzRegistration._filter_contactr.cCst|ddƒr| d¡|d<|S)aÁ The `contact` member of Registration objects should not be required when de-serializing (as it would be if the Fields' `omitempty` flag were `False`), but it should be included in serializations if it was provided. :param jobj: Dictionary containing this Registrations' data :type jobj: dict :returns: Dictionary containing Registrations data to transmit to the server :rtype: dict rÂFr±)Úgetattrrqr‘rrrÚ_add_contact_if_appropriateˆs z(Registration._add_contact_if_appropriater+cstƒ ¡}| |¡S)z2Modify josepy.JSONDeserializable.to_partial_json())r%r-rÈr‘r)rrr-™s zRegistration.to_partial_jsoncstƒ ¡}| |¡S)z;Modify josepy.JSONObjectWithFields.fields_to_partial_json())r%Úfields_to_partial_jsonrÈr‘r)rrrÉžs z#Registration.fields_to_partial_jsoncCs | |j¡S)z*All phones found in the ``contact`` field.)rÆr¿r,rrrÚphones£szRegistration.phonescCs | |j¡S)z*All emails found in the ``contact`` field.)rÆr¹r,rrrÚemails¨szRegistration.emails)NNN)&r1r=r>r?r0rNr¬r4r¦rCr±r rBr²r³rzr´rErµr¶rrr¿r¹rDr r­r r«r&rÆrÈr-rÉryrÊrËrGrrr)rr®As<   ÿþý  c@seZdZdZdS)ÚNewRegistrationzNew registration.Nr rrrrrÌ®srÌc@seZdZdZdS)ÚUpdateRegistrationzUpdate registration.Nr rrrrrͲsrÍc@sVeZdZUdZejdejd�Zee d<ejddd�Z e e d<ejddd�Z e e d<dS) ÚRegistrationResourcez²Registration Resource. :ivar acme.messages.Registration body: :ivar str new_authzr_uri: Deprecated. Do not use. :ivar str terms_of_service: URL for the CA TOS. rœrKÚnew_authzr_uriTrSr‹N) r1r=r>r?r0rNr®r4rœrCrÏrBr‹rrrrrζs rÎcs4eZdZUdZdZejdddd�Zee d<ejde j de d �Z e e d<ejd dd �Zeje d <ejd ej ddd �Zee d <edd œ‡fdd„ Zeedœ‡fdd„ Zeeefdœ‡fdd„ Zeeeefeeefdœ‡fdd„ ƒZeedœdd„ƒZeedœdd„Zeedœ‡fdd„ Z eedœdd „Z!‡Z"S)!Ú ChallengeBodya>Challenge Resource Body. .. todo:: Confusingly, this has a similar name to `.challenges.Challenge`, as well as `.achallenges.AnnotatedChallenge`. Please use names such as ``challb`` to distinguish instances of this class from ``achall``. :ivar acme.challenges.Challenge: Wrapped challenge. Conveniently, all challenge fields are proxied, i.e. you can call ``challb.x`` to get ``challb.chall.x`` contents. :ivar acme.messages.Status status: :ivar datetime.datetime validated: :ivar messages.Error error: )ÚchallrªTNrOÚ_urlr³)rLrPrQÚ validatedrSr”r‚c s,‡fdd„| ¡Dƒ}tƒjfi|¤ŽdS)Ncsi|]\}}ˆ |¡|“qSrrƒr…r,rrrár[z*ChallengeBody.__init__..rˆrŠr)r,rr&àszChallengeBody.__init__r#cstƒ | |¡¡Sr$)r%rqr„r'r)rrrqäszChallengeBody.encoder+cstƒ ¡}| |j ¡¡|Sr$)r%r-ÚupdaterÑr‘r)rrr-çs zChallengeBody.to_partial_jsonr.cs tƒ |¡}tj |¡|d<|S)NrÑ)r%Úfields_from_jsonr Z Challenger4)r3r/Z jobj_fieldsr)rrrÕìs zChallengeBody.fields_from_jsoncCs|jS)zThe URL of this challenge.)rÒr,rrrrŸòszChallengeBody.uricCs t|j|ƒSr$)rÇrÑr'rrrr•÷szChallengeBody.__getattr__c#s&tƒ ¡D]}|dkrdn|Vq dS)NrÒrŸrŒr'r)rrr�úszChallengeBody.__iter__cCs|dkr dS|S)NrŸrÒrr'rrrr„szChallengeBody._internal_name)#r1r=r>r?r@r0rNrÒrBrCrzr4ÚSTATUS_PENDINGr³rÚrfc3339rÓÚdatetimerr”rr&rqrr-rDrrÕryrŸr•rr�r„rGrrr)rrÐÃs(  ÿ ÿ&rÐc@sNeZdZUdZejdejd�Zee d<e d¡Z e e d<e e dœdd„ƒZ dS) ÚChallengeResourcez‡Challenge Resource. :ivar acme.messages.ChallengeBody body: :ivar str authzr_uri: URI found in the 'up' ``Link`` header. rœrKÚ authzr_urir+cCs|jjS)zThe URL of the challenge body.)rœrŸr,rrrrŸszChallengeResource.uriN)r1r=r>r?r0rNrÐr4rœrCrÚrBryrŸrrrrrÙs rÙc@s¸eZdZUdZejdejdd�Zee d<ejddd�Z e e e d<ejdde jd�Ze e d<ejd dd�Zeje d <ejd dd�Zee d <e je eeefee d fd œd d„ƒZ dS)Ú AuthorizationzÔAuthorization Resource Body. :ivar acme.messages.Identifier identifier: :ivar list challenges: `list` of `.ChallengeBody` :ivar acme.messages.Status status: :ivar datetime.datetime expires: rUTrVr rSr³r°ÚexpiresÚwildcard.rXcCstdd„|DƒƒS)Ncss|]}t |¡VqdSr$)rÐr4)rrÑrrrrZ,r[z+Authorization.challenges..r\r^rrrr *szAuthorization.challengesN)r1r=r>r?r0rNrJr4rUrCr rrÐrzr³rr×rÜrØrÝrErLrrBrr rrrrrÛs rÛc@seZdZdZdS)ÚNewAuthorizationzNew authorization.Nr rrrrrÞ/srÞc@seZdZdZdS)ÚUpdateAuthorizationzUpdate authorization.Nr rrrrrß3srßc@s@eZdZUdZejdejd�Zee d<ejddd�Z e e d<dS)ÚAuthorizationResourcez~Authorization Resource. :ivar acme.messages.Authorization body: :ivar str new_cert_uri: Deprecated. Do not use. rœrKÚ new_cert_uriTrSN) r1r=r>r?r0rNrÛr4rœrCrárBrrrrrà7s ràc@s0eZdZUdZejdejejd�Zej e d<dS)ÚCertificateRequestz~ACME newOrder request. :ivar jose.ComparableX509 csr: `OpenSSL.crypto.X509Req` wrapped in `.ComparableX509` Úcsr©rLÚencoderN) r1r=r>r?r0rNZ decode_csrZ encode_csrrãÚComparableX509rCrrrrrâBs râc@s>eZdZUdZe d¡Zeed<e d¡Z e e dfed<dS)ÚCertificateResourceaCertificate Resource. :ivar josepy.util.ComparableX509 body: `OpenSSL.crypto.X509` wrapped in `.ComparableX509` :ivar str cert_chain_uri: URI found in the 'up' ``Link`` header :ivar tuple authzrs: `tuple` of `AuthorizationResource`. Úcert_chain_uriÚauthzrs.N) r1r=r>r?r0rNrèrBrCrér ràrrrrrçLs rçc@sBeZdZUdZejdejejd�Zej e d<e d¡Z e e d<dS)Ú Revocationz„Revocation message. :ivar jose.ComparableX509 certificate: `OpenSSL.crypto.X509` wrapped in `jose.ComparableX509` Ú certificateräÚreasonN) r1r=r>r?r0rNZ decode_certZ encode_certrërærCrìrFrrrrrêYs  ÿrêc@sèeZdZUdZejddd�Zeee d<ejde j dd�Z e e d<ejddd�Z eee d<ejddd�Zee d<ejd dd�Zee d <ejd dd�Zeje d <ejd dej d �Zee d <ejeeeefeed fdœdd„ƒZdS)ÚOrdera_Order Resource Body. :ivar identifiers: List of identifiers for the certificate. :vartype identifiers: `list` of `.Identifier` :ivar acme.messages.Status status: :ivar authorizations: URLs of authorizations. :vartype authorizations: `list` of `str` :ivar str certificate: URL to download certificate as a fullchain PEM. :ivar str finalize: URL to POST to to request issuance once all authorizations have "valid" status. :ivar datetime.datetime expires: When the order expires. :ivar ~.Error error: Any error that occurred during finalization, if applicable. Ú identifiersTrSr³rVÚauthorizationsrëÚfinalizerÜr”r°.rXcCstdd„|DƒƒS)Ncss|]}t |¡VqdSr$)rJr4)rrUrrrrZr[z$Order.identifiers..r\r^rrrrî}szOrder.identifiersN)r1r=r>r?r0rNrîrrJrCrzr4r³rïrBrërðrr×rÜrØrr”rLrrr rrrrríes  ríc@s¼eZdZUdZejdejd�Zee d<ejdddd„dd„d �Z e e d<e d ¡Z e ee d <ejd dd �Zee d <ejd dd �Ze ee d <e je eeefeedfdœdd„ƒZ dS)Ú OrderResourcea™Order Resource. :ivar acme.messages.Order body: :ivar bytes csr_pem: The CSR this Order will be finalized with. :ivar authorizations: Fully-fetched AuthorizationResource objects. :vartype authorizations: `list` of `acme.messages.AuthorizationResource` :ivar str fullchain_pem: The fetched contents of the certificate URL produced once the order was finalized, if it's present. :ivar alternative_fullchains_pem: The fetched contents of alternative certificate chain URLs produced once the order was finalized, if present and requested during finalization. :vartype alternative_fullchains_pem: `list` of `str` rœrKÚcsr_pemTcCs | d¡S©Nzutf-8rp)Úsrrrr—™r[zOrderResource.cCs | d¡Sró)ru)Úbrrrr—šr[)rPrLrårïÚ fullchain_pemrSÚalternative_fullchains_pem.rXcCstdd„|DƒƒS)Ncss|]}t |¡VqdSr$)ràr4)rZauthzrrrrZ¥r[z/OrderResource.authorizations..r\r^rrrrï£szOrderResource.authorizationsN)r1r=r>r?r0rNrír4rœrCròÚbytesrïrràrörBr÷rLrrr rrrrrñ‚s  ÷ ÿrñc@seZdZdZdS)ÚNewOrderz New order.Nr rrrrrù¨srù)Fr?Úcollections.abcrrØr§Útypingrrrrrrr r r r Zjosepyr0Zacmer rrrrrrar‰rdÚ BaseExceptionrErZJSONDeSerializabler rHZIDENTIFIER_FQDNZ IDENTIFIER_IPršrJrrzZSTATUS_UNKNOWNrÖZSTATUS_PROCESSINGZ STATUS_VALIDZSTATUS_INVALIDZSTATUS_REVOKEDZ STATUS_READYZSTATUS_DEACTIVATEDr}r›ržr�r¡r­r®rÌrÍrÎrÐrÙrÛrÞrßràrârçrêrírñrùrrrrÚs°                â!ÿ W7   m A    &