
    &i{]                       d Z ddlmZ ddlmZ ddlmZmZmZm	Z	  G d de          Z
 G d de
          Z G d	 d
e
          Z G d de
          Z G d de
          Z G d de
          Z G d de
          Z G d de
          Z G d de
          Z G d de
          Z G d de
          Z G d de
          Z G d de
          Z G d d e
          Z G d! d"e
          Z G d# d$e
          Z G d% d&e
          Z G d' d(e
          Z G d) d*e
          ZdJd/ZdKd1ZdLd3ZdMd5Z dNd7Z!dOd9Z"dPd;Z#dPd<Z$dPd=Z%dPd>Z&dPd?Z'dPd@Z(dPdAZ)dPdBZ*dPdCZ+dPdDZ,dPdEZ-dPdFZ.dQdHZ/dIS )RzShared service guide profile models.

These models are reused by both API responses and core extraction / ingest code
so that typed contracts do not depend on the API layer.
    )annotations)Any)	BaseModel
ConfigDictFieldValidationErrorc                  *    e Zd ZdZ ed          ZdS )ServiceGuideSchemaModelu   Base model for guide schemas.

    首批强类型只收紧稳定字段，同时允许保留未来扩展字段，避免阻塞抽取器迭代。
    allow)extraN)__name__
__module____qualname____doc__r   model_config     ;D:\work\zm-rag\backend\app\schemas\service_guide_profile.pyr
   r
      s,         
 :G,,,LLLr   r
   c                  H    e Zd ZU dZded<   dZded<   dZded<   dZded<   dS )	ServiceGuideTimeLimit strraw_textdurationunitNbool | Noneis_working_day)r   r   r   r   __annotations__r   r   r   r   r   r   r   r      sR         HHDNNNN"&N&&&&&&r   r   c                      e Zd ZU dZded<   dZded<   dZded<   dZded<   dZded<   dZ	ded<   dZ
ded	<   dZded
<   dZded<   dS )ServiceGuideDocumentInfor   r   titlenormalized_titledoc_typeknowledge_categorypublish_dateeffective_dateexpiry_dateissuing_orgstatusN)r   r   r   r!   r   r"   r#   r$   r%   r&   r'   r(   r)   r   r   r   r    r       s         EOOOOH     LNKKFr   r    c                      e Zd ZU dZded<    ee          Zded<   dZded<   dZ	ded<   dZ
ded	<   dZded
<   dZded<   dZded<   dZded<   dZded<   dS )ServiceGuideMatterIdentityr   r   matter_namedefault_factory	list[str]colloquial_namesmatter_type
basic_codeimplementation_codebusiness_item_codematter_versionimplementing_subjectsubject_naturedelegated_departmentN)r   r   r   r,   r   r   listr0   r1   r2   r3   r4   r5   r6   r7   r8   r   r   r   r+   r+   *   s         K"'%"="="=====KJ!!!!!     N """""N """""""r   r+   c                  F   e Zd ZU  ee          Zded<    ee          Zded<    ee          Z	ded<   dZ
ded	<   dZd
ed<   dZded<   dZded<   dZd
ed<   dZd
ed<   dZd
ed<   dZd
ed<   dZded<    ee          Zded<   dZded<    ee          Zded<   dS )ServiceGuideBasicInfor-   r/   service_objectr   promised_time_limitlegal_time_limitN
int | Nonevisit_count_to_hallr   must_onsiter   r   must_onsite_reason	case_typenotified_commitment_enabledhall_requiredexpress_supportedreservation_supportedreservation_urlservice_modesonline_depthlinked_agencies)r   r   r   r   r9   r<   r   r   r=   r>   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   r   r   r   r;   r;   7   s[         %d ; ; ;N;;;;16G\1]1]1]]]]].3eDY.Z.Z.ZZZZZ&*****#K####     I/33333!%M%%%%%))))))-----O$uT:::M::::L!&t!<!<!<O<<<<<<r   r;   c                      e Zd ZU dZded<    ee          Zded<    ee          Zded<   dZ	d	ed
<    ee          Z
ded<   dZded<   dZded<   dS )ServiceGuideCrossRegionr   r   service_scope_typer-   r/   regions_summaryregions_detailFboolregions_truncatedrI   notesr   N)r   r   r   rN   r   r   r9   rO   rP   rR   rI   rS   r   r   r   r   rM   rM   I   s              !&t!<!<!<O<<<< %d ; ; ;N;;;;#####$uT:::M::::EOOOOHr   rM   c                  j    e Zd ZU dZded<    ee          Zded<   dZded<   dZ	ded<   d	Z
d
ed<   dS )ServiceGuideProcessInfor   r   summaryr-   r/   step_titlesr   rS   FrQ   needs_reviewN)r   r   r   rV   r   r   r9   rW   r   rS   rX   r   r   r   rU   rU   S   sp         G"U4888K8888HEOOOOLr   rU   c                  P   e Zd ZU dZded<   dZded<   dZded<   dZded<   dZded	<   dZ	ded
<    e
e          Zded<   dZded<   dZded<   dZded<   dZded<   dZded<   dZded<   dZded<   dZded<    e
e          Zded<   dZded<   dZded<   dZded<   dZded<   dS )ServiceGuideMaterialr   r   guide_material_idmaterial_namelinked_material_idrequirement_levelNr?   original_count
copy_countr-   r/   
form_types
paper_specr   electronic_license_linkedexempt_submissionreusable_previous_submissionmaterial_typesource_channelfill_instructionsrS   applicable_conditionsblank_form_availablesample_availabledownload_hintraw_row_text)r   r   r   r[   r   r\   r]   r^   r_   r`   r   r9   ra   rb   rc   rd   re   rf   rg   rh   rS   ri   rj   rk   rl   rm   r   r   r   rZ   rZ   [   s        M     !%N%%%%!J!!!!!E$777J7777J-11111%)))))04 4444MNEOOOO',uT'B'B'BBBBB(,,,,,$(((((MLr   rZ   c                      e Zd ZU dZded<   dZded<   dZded<   dZded<   dZded	<   dZ	ded
<   dZ
ded<   dZded<   dS )ServiceGuideFeer   r   fee_nameamount_textNfloat | Noneamount_valuecurrencycharging_bodycharging_methodr   	reduciblerS   )r   r   r   rp   r   rq   rs   rt   ru   rv   rw   rS   r   r   r   ro   ro   r   s         HK!%L%%%%HMO!I!!!!EOOOOOOr   ro   c                  d    e Zd ZU dZded<   dZded<   dZded<   dZded<   dZded	<   dZ	ded
<   dS )ServiceGuideLegalBasisr   r   law_namedocument_no
article_noissuing_bodyNz
str | Noner&   article_content)
r   r   r   rz   r   r{   r|   r}   r&   r~   r   r   r   ry   ry   }   sx         HKJL!%N%%%%Or   ry   c                      e Zd ZU  ee          Zded<    ee          Zded<    ee          Zded<    ee          Z	ded<   dS )ServiceGuideConsultationr-   r/   consultation_phonesconsultation_urlscomplaint_phonescomplaint_urlsN)
r   r   r   r   r9   r   r   r   r   r   r   r   r   r   r      s         %*U4%@%@%@@@@@#(5#>#>#>>>>>"'%"="="===== %d ; ; ;N;;;;;;r   r   c                  d    e Zd ZU dZded<   dZded<   dZded<   dZded<   dZded<   dZ	ded<   d	S )
ServiceGuideServiceWindowr   r   window_namelocationoffice_phoneoffice_hours
navigationscopeN)
r   r   r   r   r   r   r   r   r   r   r   r   r   r   r      sr         KHLLJEOOOOOOr   r   c                  \    e Zd ZU dZded<   dZded<    ee          Zded<   dZ	ded<   d	S )
ServiceGuideReviewInfor   r   power_levelpower_sourcer-   r/   service_formsbusiness_systemN)
r   r   r   r   r   r   r   r9   r   r   r   r   r   r   r      sc         KL$uT:::M::::Or   r   c                      e Zd ZU  ee          Zded<    ee          Zded<    ee          Zded<    ee          Z	ded<   dZ
ded	<    ee          Zded
<   dS )ServiceGuideAcceptanceInfor-   r/   service_targetsnatural_person_topicslegal_person_topicslocal_feature_topicsr   r   application_scopeacceptance_conditionsN)r   r   r   r   r9   r   r   r   r   r   r   r   r   r   r   r   r      s         !&t!<!<!<O<<<<',uT'B'B'BBBBB%*U4%@%@%@@@@@&+eD&A&A&AAAAA',uT'B'B'BBBBBBBr   r   c                  T    e Zd ZU  ee          Zded<    ee          Zded<   dS ) ServiceGuideRightsAndObligationsr-   r/   rightsobligationsN)r   r   r   r   r9   r   r   r   r   r   r   r   r      sN         d333F3333"U4888K888888r   r   c                  :    e Zd ZU dZded<   dZded<   dZded<   dS )ServiceGuideOrganizationBindingr   r   nameorganization_idroleN)r   r   r   r   r   r   r   r   r   r   r   r      s;         DNNNNODNNNNNNr   r   c                  v    e Zd ZU  ee          Zded<    ee          Zded<    ee          Zded<   dS )	ServiceGuideBindingsr-   r/   
matter_idsz%list[ServiceGuideOrganizationBinding]organization_bindingslist[dict[str, Any]]region_bindingsN)	r   r   r   r   r9   r   r   r   r   r   r   r   r   r      sn         !E$777J7777CH5Y]C^C^C^^^^^,1E$,G,G,GOGGGGGGr   r   c                  ~    e Zd ZU dZded<   dZded<    ee          Zded<   dZ	d	ed
<    ee          Z
ded<   dS )ServiceGuideQuality        floatcompleteness_scoreconfidence_scorer-   r/   missing_fieldsFrQ   rX   warningsN)r   r   r   r   r   r   r   r9   r   rX   r   r   r   r   r   r      s          #####!!!!! %d ; ; ;N;;;;L%555H555555r   r   c                     e Zd ZU dZded<   dZded<   dZded<   dZded<    ee	          Z
ded	<   dZded
<   dZded<   dZded<   dZded<   dZded<   dZded<   dZded<   dZded<   dZded<    ee	          Zded<   dZded<   dZded<   dZded<   dZded<   dZded<   dZded<   dZded<   dZded<    ee	          Zded<    ee	          Zded<   dZded <   d!Z d"ed#<   d!Z!d"ed$<   d!Z"d"ed%<   d!Z#d"ed&<   dZ$ded'<   d!Z%d(ed)<   d!Z&d(ed*<   d!Z'd(ed+<    ee	          Z(ded,<    ee	          Z)ded-<    ee	          Z*ded.<    ee	          Z+ded/<    ee	          Z,ded0<    ee	          Z-ded1<    ee	          Z.ded2<   dZ/ded3<    ee	          Z0ded4<   dZ1ded5<   d6Z2ded7<   d8Z3d9ed:<   d8Z4d9ed;<    ee5          Z6d<ed=<    ee7          Z8d>ed?<    ee9          Z:d@edA<    ee	          Z;dBedC<    ee<          Z=dDedE<    ee	          Z>dFedG<    ee?          Z@dHedI<    eeA          ZBdJedK<    ee	          ZCdLedM<    ee	          ZDdNedO<    ee	          ZEdPedQ<    eeF          ZGdRedS<    eeH          ZIdTedU<    eeJ          ZKdVedW<    ee	          ZLdXedY<    eeM          ZNdZed[<    eeO          ZPd\ed]<    eeH          ZQd^ed_<   d!S )`StandardServiceGuideProfiler   r   schema_version
profile_iddoc_idcontent_hashr-   r/   acl_ids
scene_typesource
source_urlTrQ   
is_currentguide_versionextractor_versionextracted_at
updated_atr,   r0   r1   r3   r2   r4   r5   r6   implementing_subject_naturer8   service_objectsrI   rJ   Nr   rE   rF   rG   rA   rB   r?   r@   promised_time_limit_dayslegal_time_limit_dayshandled_org_namesregion_nameslinked_matter_idsmaterial_names	fee_nameswindow_nameslegal_basis_namescross_region_scopecross_region_summaryguide_search_textFrX   r   r   r   r   r    document_infor+   matter_identityr;   
basic_infozlist[ServiceGuideCrossRegion]cross_region_servicer   review_infor   result_infor   acceptance_inforU   process_infozlist[ServiceGuideMaterial]	materialszlist[ServiceGuideFee]feeszlist[ServiceGuideLegalBasis]legal_basisr   rights_and_obligationsdict[str, Any]remediesr   consultation_and_supervisionzlist[ServiceGuideServiceWindow]service_windowsr   bindingsr   qualityzdict[str, str]raw_sections)Rr   r   r   r   r   r   r   r   r   r9   r   r   r   r   r   r   r   r   r   r,   r0   r1   r3   r2   r4   r5   r6   r   r8   r   rI   rJ   rE   rF   rG   rA   rB   r@   r   r   r   r   r   r   r   r   r   r   r   r   rX   r   r   r    r   r+   r   r;   r   r   r   r   r   r   r   rU   r   r   r   r   r   r   dictr   r   r   r   r   r   r   r   r   r   r   r   r   r      s/        NJFLt444G4444JFJJMLJK"'%"="="=====K!!!!!J     N """""'))))) """""!&t!<!<!<O<<<<$uT:::M::::L!%M%%%%%))))))-----#K####     &*****+/////(,,,,,#(5#>#>#>>>>>#eD999L9999#(5#>#>#>>>>> %d ; ; ;N;;;; 5666I6666#eD999L9999#(5#>#>#>>>>>     &+eD&A&A&AAAAAL #####!!!!!.3eD\.].].]M]]]]27%Hb2c2c2cOcccc(->S(T(T(TJTTTT:?%PT:U:U:UUUUU*/%@V*W*W*WKWWWW(-d(C(C(CKCCCC27%Hb2c2c2cOcccc,1EBY,Z,Z,ZLZZZZ,1E$,G,G,GIGGGG"'%"="="=D====05d0K0K0KKKKKK?Du8@ @ @      %uT:::H::::=BU0> > >      8=uT7R7R7RORRRR%*U;O%P%P%PHPPPP#(59L#M#M#MGMMMM#(5#>#>#>L>>>>>>r   r   valuer   returnr   c                    | dS t          | t                    r| S t          | t          t          f          r$t          | t                    st          |           S dS )Nr   )
isinstancer   intr   rQ   r   s    r   _coerce_stringr     s[    }r% %#u&& z%/F/F 5zz2r   r/   c                X   | g S t          | t                    r| r| gng S t          | t          t          t          f          rAg }| D ]:}t          |                                          }|r|                    |           ;|S t          |                                           }|r|gng S N)r   r   r9   tuplesetr   stripappend)r   valuesitemcoerceds       r   _coerce_string_listr     s    }	% ('wwR'%$s+,,  	' 	'D$T**0022G 'g&&&U##))++G'G99R'r   r   c                4    t          | t                    r| nd S r   )r   rQ   r   s    r   _coerce_boolr   %  s    ud++5555r   r?   c                f   t          | t                    s| d S t          | t                    r| S t          | t                    rt          |           S t          | t                    rG|                                                                 r!t          |                                           S d S r   )r   rQ   r   r   r   r   isdigitr   s    r   _coerce_intr   )  s    % %-t% % 5zz% "%++--"7"7"9"9 "5;;==!!!4r   rr   c                   t          | t                    s| d S t          | t          t          f          rt          |           S t          | t                    r3	 t          |                                           S # t          $ r Y d S w xY wd S r   )r   rQ   r   r   r   r   
ValueErrorr   s    r   _coerce_floatr   5  s    % %-t%#u&& U||% 	''' 	 	 	44	4s    A< <
B
	B
r   c                x    t          | t                    r| gS t          | t                    rd | D             S g S )Nc                <    g | ]}t          |t                    |S r   )r   r   ).0r   s     r   
<listcomp>z%_coerce_dict_list.<locals>.<listcomp>F  s'    AAA*T4*@*@AAAAr   )r   r   r9   r   s    r   _coerce_dict_listr   B  sG    % w% BAAAAAAIr   r   c                B   t          | t                    r| ni }t          |                    d                    t          |                    d                    t          |                    d                    t	          |                    d                    dS )Nr   r   r   r   )r   r   r   r   )r   r   r   getr   r   r   s     r   _sanitize_time_limitr  J  s     --5UU2F"6::j#9#9::"6::j#9#9::vzz&1122&vzz2B'C'CDD	  r   c                   t          | t                    r| ni }t          |                    d                    t          |                    d                    t          |                    d                    t          |                    d                    t          |                    d                    t          |                    d                    t          |                    d                    t          |                    d                    t          |                    d	                    d
	S )Nr!   r"   r#   r$   r%   r&   r'   r(   r)   )	r!   r"   r#   r$   r%   r&   r'   r(   r)   )r   r   r   r  r  s     r   _sanitize_document_infor  T  s     --5UU2F

7 3 344*6::6H+I+IJJ"6::j#9#9::,VZZ8L-M-MNN&vzz.'A'ABB(4D)E)EFF%fjj&?&?@@%fjj&?&?@@ H!5!566
 
 
r   c                   t          | t                    r| ni }t          |                    d                    t	          |                    d                    t          |                    d                    t          |                    d                    t          |                    d                    t          |                    d                    t          |                    d                    t          |                    d                    t          |                    d	                    t          |                    d
                    d
S )Nr,   r0   r1   r2   r3   r4   r5   r6   r7   r8   )
r,   r0   r1   r2   r3   r4   r5   r6   r7   r8   r   r   r   r  r   r  s     r   _sanitize_matter_identityr	  c  s    --5UU2F%fjj&?&?@@/

;M0N0NOO%fjj&?&?@@$VZZ%=%=>>-fjj9N.O.OPP,VZZ8L-M-MNN(4D)E)EFF .vzz:P/Q/Q R R(4D)E)EFF .vzz:P/Q/Q R R  r   c                   t          | t                    r| ni }t          |                    d                    t	          |                    d                    t	          |                    d                    t          |                    d                    t          |                    d                    t          |                    d                    t          |                    d                    t          |                    d                    t          |                    d	                    t          |                    d
                    t          |                    d                    t          |                    d                    t          |                    d                    t          |                    d                    t          |                    d                    dS )Nr<   r=   r>   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   )r<   r=   r>   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   )r   r   r   r  r  r   r   r   r  s     r   _sanitize_basic_infor  s  s    --5UU2F-fjj9I.J.JKK3FJJ?T4U4UVV0<N1O1OPP*6::6K+L+LMM#FJJ}$=$=>>,VZZ8L-M-MNN#FJJ{$;$;<<'3FJJ?\4]4]'^'^%fjj&A&ABB)&**5H*I*IJJ!-fjj9P.Q.Q!R!R)&**5F*G*GHH,VZZ-H-HII&vzz.'A'ABB.vzz:K/L/LMM  r   c           	        t          | t                    r| ni }t          |                    d                    t	          |                    d                    t          |                    d                    t          |                    d                    t          |                    d          t
                    r|                    d          nddS )NrV   rW   r   rS   rX   F)rV   rW   r   rS   rX   )r   r   r   r  r   rQ   r  s     r   _sanitize_process_infor    s     --5UU2F!&**Y"7"788*6::m+D+DEE"6::j#9#9::

7 3 3446@NA[A[]a6b6bm

>222hm  r   c                B   t          | t                    r| ni }t          |                    d                    t          |                    d                    t	          |                    d                    t          |                    d                    dS )Nr   r   r   r   )r   r   r   r   r  r  s     r   _sanitize_review_infor    s     --5UU2F%fjj&?&?@@&vzz.'A'ABB,VZZ-H-HII)&**5F*G*GHH	  r   c           
        t          | t                    r| ni }t          |                    d                    t          |                    d                    t          |                    d                    t          |                    d                    t	          |                    d                    t          |                    d                    dS )Nr   r   r   r   r   r   )r   r   r   r   r   r   )r   r   r   r  r   r  s     r   _sanitize_acceptance_infor    s     --5UU2F.vzz:K/L/LMM!4VZZ@W5X5X!Y!Y26::>S3T3TUU 3FJJ?U4V4V W W+FJJ7J,K,KLL!4VZZ@W5X5X!Y!Y  r   c                B   t          | t                    r| ni }t          |                    d                    t          |                    d                    t          |                    d                    t          |                    d                    dS )Nr   r   r   r   )r   r   r   r   r   r   r   r  r  s     r   _sanitize_consultationr    s     --5UU2F26::>S3T3TUU0<O1P1PQQ/

;M0N0NOO-fjj9I.J.JKK	  r   c                    t          | t                    r| ni }t          |                    d                    t          |                    d                    dS )Nr   r   )r   r   r  r  s     r    _sanitize_rights_and_obligationsr    sW     --5UU2F%fjj&:&:;;*6::m+D+DEE  r   c                    t          | t                    r| ni }t          |                    d                    t	          |                    d                    t	          |                    d                    dS )Nr   r   r   )r   r   r   )r   r   r   r  r   r  s     r   _sanitize_bindingsr    sp     --5UU2F)&**\*B*BCC!26::>U3V3V!W!W,VZZ8I-J-JKK  r   c           	        t          | t                    r| ni }t          |                    d                    pdt          |                    d                    pdt	          |                    d                    t          |                    d          t
                    r|                    d          ndt	          |                    d                    dS )	Nr   r   r   r   rX   Fr   )r   r   r   rX   r   )r   r   r   r  r   rQ   r  s     r   _sanitize_qualityr    s     --5UU2F+FJJ7K,L,LMMTQT)&**5G*H*HIIPS-fjj9I.J.JKK6@NA[A[]a6b6bm

>222hm'

:(>(>??  r   c                   t          | t                    r| ni }i dt          |                    d                    dt          |                    d                    dt          |                    d                    dt          |                    d                    dt	          |                    d                    dt          |                    d                    dt          |                    d                    dt          |                    d                    d	t          |                    d	          t
                    r|                    d	          nd
dt          |                    d                    dt          |                    d                    dt          |                    d                    dt          |                    d                    dt          |                    d                    dt	          |                    d                    dt          |                    d                    dt          |                    d                    i dt          |                    d                    dt          |                    d                    dt          |                    d                    dt          |                    d                    dt          |                    d                    dt          |                    d                    dt	          |                    d                    dt	          |                    d                    dt          |                    d                    dt          |                    d                    dt          |                    d                    dt          |                    d                    dt          |                    d                    d t          |                    d                     d!t          |                    d!                    d"t          |                    d"                    d#t          |                    d#                    i d$t	          |                    d$                    d%t	          |                    d%                    d&t	          |                    d&                    d't	          |                    d'                    d(t	          |                    d(                    d)t	          |                    d)                    d*t	          |                    d*                    d+t          |                    d+                    d,t	          |                    d,                    d-t          |                    d-                    d.t          |                    d.          t
                    r|                    d.          nd/d0t          |                    d0                    pd1d2t          |                    d2                    pd1d3t          |                    d3                    d4t          |                    d4                    d5t          |                    d5                    d6t          |                    d6                    t          |                    d7                    t          |                    d8                    t          |                    d9                    t          |                    d:                    t          |                    d;                    t          |                    d<                    t          |                    d=                    t!          |                    d>                    t          |                    d?          t                    r|                    d?          ni t#          |                    d@                    t          |                    dA                    t%          |                    dB                    t'          |                    dC                    t          |                    dD          t                    r|                    dD          ni dES )FNr   r   r   r   r   r   r   r   r   Tr   r   r   r   r,   r0   r1   r3   r2   r4   r5   r6   r   r8   r   rI   rJ   rE   rF   rG   rA   rB   r@   r   r   r   r   r   r   r   r   r   r   r   r   rX   Fr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r  r   rQ   r   r   r   r  r	  r  r   r  r  r  r  r  r  r  r  s     r   &sanitize_service_guide_profile_payloadr    s    --5UU2FB.4D)E)EFFBnVZZ%=%=>>B 	.H!5!566B 	vzz.'A'ABB	B
 	&vzz)'<'<==B 	nVZZ%=%=>>B 	.H!5!566B 	nVZZ%=%=>>B 	*VZZ=U=UW[2\2\ffjj...bfB 	

?(C(CDDB 	^FJJ7J,K,KLLB 	vzz.'A'ABBB 	nVZZ%=%=>>B 	~fjj&?&?@@B 	/

;M0N0NOOB  	~fjj&?&?@@!B" 	~fjj9N.O.OPP#B B$ 	nVZZ%=%=>>%B& 	nVZZ8L-M-MNN'B( 	.4D)E)EFF)B* 	vzz:P/Q/Q R R+B, 	&~fjjA^6_6_'`'`-B. 	vzz:P/Q/Q R R/B0 	.vzz:K/L/LMM1B2 	,VZZ-H-HII3B4 	vzz.'A'ABB5B6 	fjj&A&ABB7B8 	\&**5H*I*IJJ9B: 	 fjj9P.Q.Q!R!R;B< 	|FJJ}$=$=>>=B> 	nVZZ8L-M-MNN?B@ 	{6::6K+L+LMMABB 	#K

;U0V0V$W$WCBD 	 VZZ8O-P-P!Q!QEB B BF 	0<O1P1PQQGBH 	+FJJ~,F,FGGIBJ 	0<O1P1PQQKBL 	-fjj9I.J.JKKMBN 	(K)@)@AAOBP 	+FJJ~,F,FGGQBR 	0<O1P1PQQSBT 	nVZZ8L-M-MNNUBV 	 3FJJ?U4V4V W WWBX 	^FJJ7J,K,KLLYBZ 	jNA[A[]a6b6bm

>222hm[B\ 	mFJJ7K,L,LMMTQT]B^ 	M&**5G*H*HIIPS_B` 	0O1L1LMMaBb 	4VZZ@Q5R5RSScBd 	*6::l+C+CDDeBf 	 1&**=S2T2T U UgB Bh -VZZ-F-FGG(M)B)BCC4VZZ@Q5R5RSS.vzz./I/IJJ&vzz+'>'>??!&**V"4"455(M)B)BCC"B6::NfCgCg"h"h.8J9O9OQU.V.V^FJJz***\^(>vzzJh?i?i(j(j,VZZ8I-J-JKK&vzz*'='=>>$VZZ	%:%:;;6@NA[A[]a6b6bj

>222hjCB B B Br   (tuple[StandardServiceGuideProfile, bool]c                .   t          | t                    r| dfS t          | t                    st                      dfS 	 t                              |           dfS # t          $ r. t          |           }t                              |          dfcY S w xY w)NFT)r   r   r   model_validater   r  )r   	sanitizeds     r   &build_compatible_service_guide_profiler!    s    %455 e|eT"" 3*,,d22K*99%@@%GG K K K:5AA	*99)DDdJJJJKs    A 5BBN)r   r   r   r   )r   r   r   r/   )r   r   r   r   )r   r   r   r?   )r   r   r   rr   )r   r   r   r   )r   r   r   r   )r   r   r   r  )0r   
__future__r   typingr   pydanticr   r   r   r   r
   r   r    r+   r;   rM   rU   rZ   ro   ry   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r	  r  r  r  r  r  r  r  r  r  r!  r   r   r   <module>r%     s3    # " " " " "       B B B B B B B B B B B B- - - - -i - - -' ' ' ' '3 ' ' '	 	 	 	 	6 	 	 	
# 
# 
# 
# 
#!8 
# 
# 
#= = = = =3 = = =$    5       5       2   .    -       4   < < < < <6 < < <     7       4   C C C C C!8 C C C9 9 9 9 9'> 9 9 9
    &=   H H H H H2 H H H6 6 6 6 61 6 6 6I? I? I? I? I?"9 I? I? I?X   ( ( ( ( 6 6 6 6	 	 	 	
 
 
 
                *      	 	 	 	            D D D DN	K 	K 	K 	K 	K 	Kr   