+
    ¾¾j1U  ã                  ór  € R t ^ RIHt ^ RIt^ RIHt ^ RIHtHtH	t	H
t
 ^ RIHtHtHtHtHtHtHtHtHtHt ^ RIHt ^ RIHt ^ RIHt ^ R	IHt ^ R
IHt ^ RI H!t! ]'       dA   ^ RI"H#t#H$t$ ^ RIH%t%Ht ^ RI&H't' ^ RI(H)t) ^ RI*H+t+ ^ RI,H-t- ^ RI.H/t/ ^ RI0H1t1 ^ RI2H3t3 ^ RI4H5t5 R]! R2t6 ! R R]4      t7R.t8R# )z :rfc:`5545` iCalendar component.)ÚannotationsN)Ú	timedelta)ÚTYPE_CHECKINGÚLiteralÚcastÚoverload)
ÚCONCEPTS_TYPE_SETTERÚLINKS_TYPE_SETTERÚRELATED_TO_TYPE_SETTERÚcategories_propertyÚimages_propertyÚmulti_language_text_propertyÚsingle_string_propertyÚsource_propertyÚuid_propertyÚurl_property)Ú	Component)Úget_example)ÚTimezone)ÚIncompleteComponent)ÚCalendarIcalParser)Ú__version__)ÚIterableÚSequence)ÚdateÚdatetime)ÚPath)ÚAvailability)ÚEvent)ÚFreeBusy)ÚJournal)ÚTodo)ÚSelf)ÚComponentIcalParserz-//collective//icalendar//z//ENc                  óÆ  a € ] tR t^-tRtRtR;tR<tR=tR>t	]
R?R R ll4       t]
R R l4       t]]
R@R R ll4       4       t]]
R R l4       4       t]
R@R V 3R lll4       t]R R l4       t]R R l4       t]R R l4       t]R R l4       t]R R l4       tR  R! ltR" R# lt]R$ R% l4       t]P2                  ]P4                  3R& R' llt]! R	R
R(4      t]! RRR)4      t]! RR*R+4      t ]!t"]#t$]! RR,4      t%]! RR-4      t&]! RR.R/R07      t']! RR14      t(])t*]+t,]R2 R3 l4       t-]-P\                  R4 R5 l4       t-]-P^                  R6 4       t-]0t1]
RAR7 V 3R8 lll4       t2R9 t3R:t4V ;t5# )BÚCalendaraº  
    The "VCALENDAR" object is a collection of calendar information.
    This information can include a variety of components, such as
    "VEVENT", "VTODO", "VJOURNAL", "VFREEBUSY", "VTIMEZONE", or any
    other type of calendar component.

Examples:
    Create a new Calendar:

        >>> from icalendar import Calendar
        >>> calendar = Calendar.new(name="My Calendar")
        >>> print(calendar.calendar_name)
        My Calendar

Ú	VCALENDARÚVERSIONÚPRODIDÚCALSCALEÚMETHODÚDESCRIPTIONúX-WR-CALDESCÚNAMEúX-WR-CALNAMEÚCOLORc               ó    € V ^8„  d   QhRRRR/# )é   ÚnameÚstrÚreturnr%   © )Úformats   "ÚU/home/ralf/ical-fahrzeuge/venv/lib/python3.14/site-packages/icalendar/cal/calendar.pyÚ__annotate__ÚCalendar.__annotate__[   s   € ÷ =ñ =˜3ð =¨xñ =ó    c                ó8   € V P                  \        RV4      4      # )z0Return the calendar example with the given name.Ú	calendars)Ú	from_icalr   )Úclsr2   s   &&r7   ÚexampleÚCalendar.exampleZ   s   € ð �}‰}œ[¨°dÓ;Ó<Ð<r:   c               ó    € V ^8„  d   QhRRRR/# )r1   Ústzstr | bytesr4   r#   r5   )r6   s   "r7   r8   r9   `   s   € ÷ Wñ W +ð WÐ2Eñ Wr:   c                óJ   € \        WP                  4       V P                  4      # )z/Get the iCal parser for the given input string.)r   Ú_get_component_factoryÚtypes_factory)r>   rB   s   &&r7   Ú_get_ical_parserÚCalendar._get_ical_parser_   s    € ô " "×&@Ñ&@Ó&BÀC×DUÑDUÓVÐVr:   c               ó$   € V ^8„  d   QhRRRRRR/# )r1   rB   ústr | bytes | PathÚmultiplezLiteral[False]r4   r%   r5   )r6   s   "r7   r8   r9   f   s$   € ÷ ñ Ø#ðØ/=ðà	ñr:   c                	ó   € R # ©Nr5   ©r>   rB   rJ   s   &&&r7   r=   ÚCalendar.from_icald   s   € ñ r:   c               ó$   € V ^8„  d   QhRRRRRR/# )r1   rB   rI   rJ   zLiteral[True]r4   zlist[Calendar]r5   )r6   s   "r7   r8   r9   l   s$   € ÷ ñ Ø#ðØ/<ðà	ñr:   c                	ó   € R # rL   r5   rM   s   &&&r7   r=   rN   j   s   € ñ r:   c               ó$   € V ^8„  d   QhRRRRRR/# )r1   rB   rI   rJ   Úboolr4   úCalendar | list[Calendar]r5   )r6   s   "r7   r8   r9   q   s$   € ÷ 
ñ 
Ø#ð
Ø/3ð
à	"ñ
r:   c                ó8   <€ \        R\        SV `	  WR7      4      # )a  Parse iCalendar data into calendar instances.

Parameters:
    st: iCalendar data as bytes or string, or a path to an iCalendar file.
    multiple: If ``True``, returns a list of calendars.
        If ``False``, returns a single calendar.

Returns:
    Calendar or list of calendars.
rS   )rJ   )r   Úsuperr=   )r>   rB   rJ   Ú	__class__s   &&&€r7   r=   rN   p   s$   ø€ ô Ø'¬©Ñ):¸2Ð):Ó)Qó
ð 	
r:   c               ó   € V ^8„  d   QhRR/# )r1   r4   zlist[Event]r5   )r6   s   "r7   r8   r9   ƒ   s   € ÷ #ñ #˜ñ #r:   c                ó$   € V P                  R4      # )aˆ  All event components in the calendar.

This is a shortcut to get all events.
Modifications do not change the calendar.
Use :meth:`Component.add_component <icalendar.cal.component.Component.add_component>`.

>>> from icalendar import Calendar
>>> calendar = Calendar.example()
>>> event = calendar.events[0]
>>> event.start
datetime.date(2022, 1, 1)
>>> print(event["SUMMARY"])
New Year's Day
ÚVEVENT©Úwalk©Úselfs   &r7   ÚeventsÚCalendar.events‚   s   € ð  �y‰y˜Ó"Ð"r:   c               ó   € V ^8„  d   QhRR/# )r1   r4   z
list[Todo]r5   )r6   s   "r7   r8   r9   •   s   € ÷ "ñ "�zñ "r:   c                ó$   € V P                  R4      # )zÌAll todo components in the calendar.

This is a shortcut to get all todos.
Modifications do not change the calendar.
Use :meth:`Component.add_component <icalendar.cal.component.Component.add_component>`.
ÚVTODOrZ   r\   s   &r7   ÚtodosÚCalendar.todos”   s   € ð �y‰y˜Ó!Ð!r:   c               ó   € V ^8„  d   QhRR/# )r1   r4   zlist[Journal]r5   )r6   s   "r7   r8   r9   Ÿ   s   € ÷ %ñ %˜-ñ %r:   c                ó$   € V P                  R4      # )zÒAll journal components in the calendar.

This is a shortcut to get all journals.
Modifications do not change the calendar.
Use :meth:`Component.add_component <icalendar.cal.component.Component.add_component>`.
ÚVJOURNALrZ   r\   s   &r7   ÚjournalsÚCalendar.journalsž   s   € ð �y‰y˜Ó$Ð$r:   c               ó   € V ^8„  d   QhRR/# )r1   r4   zlist[Availability]r5   )r6   s   "r7   r8   r9   ©   s   € ÷ *ñ *Ð 2ñ *r:   c                ó$   € V P                  R4      # )zæAll :class:`Availability` components in the calendar.

This is a shortcut to get all availabilities.
Modifications do not change the calendar.
Use :meth:`Component.add_component <icalendar.cal.component.Component.add_component>`.
ÚVAVAILABILITYrZ   r\   s   &r7   ÚavailabilitiesÚCalendar.availabilities¨   s   € ð �y‰y˜Ó)Ð)r:   c               ó   € V ^8„  d   QhRR/# )r1   r4   zlist[FreeBusy]r5   )r6   s   "r7   r8   r9   ³   s   € ÷ &ñ &˜.ñ &r:   c                ó$   € V P                  R4      # )zÓAll FreeBusy components in the calendar.

This is a shortcut to get all FreeBusy.
Modifications do not change the calendar.
Use :meth:`Component.add_component <icalendar.cal.component.Component.add_component>`.
Ú	VFREEBUSYrZ   r\   s   &r7   ÚfreebusyÚCalendar.freebusy²   s   € ð �y‰y˜Ó%Ð%r:   c               ó   € V ^8„  d   QhRR/# ©r1   r4   zset[str]r5   )r6   s   "r7   r8   r9   ¼   s   € ÷ ñ  ñ r:   c                óÜ   € \        4       pV P                  RR7       FC  w  r#\        VR4      '       g   K  VP                  VP                  P                  R4      4       KE  	  VR0,
          # )aR  The set of TZIDs in use.

This goes through the whole calendar to find all occurrences of
timezone information like the TZID parameter in all attributes.

>>> from icalendar import Calendar
>>> calendar = Calendar.example("timezone_rdate")
>>> calendar.get_used_tzids()
{'posix/Europe/Vaduz'}

Even if you use UTC, this will not show up.
F)ÚsortedÚparamsÚTZIDN)ÚsetÚproperty_itemsÚhasattrÚaddrx   Úget)r]   ÚresultÚ_nameÚvalues   &   r7   Úget_used_tzidsÚCalendar.get_used_tzids¼   s[   € ô “ˆØ ×/Ñ/°uÐ/Ö=‰LˆEÜ�u˜h×'Ô'Ø—
‘
˜5Ÿ<™<×+Ñ+¨FÓ3Ö4ñ >ð ˜˜�Ðr:   c               ó   € V ^8„  d   QhRR/# ru   r5   )r6   s   "r7   r8   r9   Ï   s   € ÷ ñ  8ñ r:   c                ó’   € V P                  4       R0,
          pV P                   F  pVP                  VP                  4       K   	  V# )a  The set of missing timezone component tzids.

To create a :rfc:`5545` compatible calendar,
all of these timezones should be added.

UTC is excluded: per :rfc:`5545#section-3.2.19`, UTC datetimes use
the ``Z`` suffix and never require a VTIMEZONE component.
ÚUTC)r‚   Ú	timezonesÚdiscardÚtz_name)r]   ÚtzidsÚtimezones   &  r7   Úget_missing_tzidsÚCalendar.get_missing_tzidsÏ   sB   € ð ×#Ñ#Ó%¨¨Õ/ˆØŸœˆHð �M‰M˜(×*Ñ*Ö+ñ 'ð ˆr:   c               ó   € V ^8„  d   QhRR/# )r1   r4   zlist[Timezone]r5   )r6   s   "r7   r8   r9   à   s   € ÷ &ñ &˜>ñ &r:   c                ó$   € V P                  R4      # )a  Return the timezones components in this calendar.

>>> from icalendar import Calendar
>>> calendar = Calendar.example("pacific_fiji")
>>> [timezone.tz_name for timezone in calendar.timezones]
['custom_Pacific/Fiji']

.. note::

    This is a read-only property.
Ú	VTIMEZONErZ   r\   s   &r7   r‡   ÚCalendar.timezonesß   s   € ð �y‰y˜Ó%Ð%r:   c               ó    € V ^8„  d   QhRRRR/# )r1   Ú
first_dater   Ú	last_dater5   )r6   s   "r7   r8   r9   î   s   € ÷ 0)ñ 0)àð0)ð ñ0)r:   c                ó  € V P                  4       pV'       g   R# \        V P                  4      pV F@  p \        P                  ! WQVR7      pT P                  P                  YF4       T^,          pKB  	  R#   \
         d     KT  i ; i)aw  Add all missing VTIMEZONE components.

This adds all the timezone components that are required.
VTIMEZONE components are inserted at the beginning of the calendar
to ensure they appear before other components that reference them.

.. note::

    Timezones that are not known will not be added.

Parameters:
    first_date: Earlier than anything that happens in the calendar.
    last_date: Later than anything happening in the calendar.

>>> from icalendar import Calendar, Event
>>> from datetime import datetime
>>> from zoneinfo import ZoneInfo
>>> calendar = Calendar()
>>> event = Event()
>>> calendar.add_component(event)
>>> event.start = datetime(1990, 10, 11, 12, tzinfo=ZoneInfo("Europe/Berlin"))
>>> calendar.timezones
[]
>>> calendar.add_missing_timezones()
>>> calendar.timezones[0].tz_name
'Europe/Berlin'
>>> calendar.get_missing_tzids()  # check that all are added
set()
N)r“   r”   )rŒ   Úlenr‡   r   Ú	from_tzidÚ
ValueErrorÚsubcomponentsÚinsert)r]   r“   r”   Úmissing_tzidsÚexisting_timezone_countÚtzidr‹   s   &&&    r7   Úadd_missing_timezonesÚCalendar.add_missing_timezonesî   s‚   € ðD ×.Ñ.Ó0ˆßÙä"% d§n¡nÓ"5Ðã!ˆDðÜ#×-Ò-Ø¸9ô�ð
 ×Ñ×%Ñ%Ð&=ÔHØ# qÕ(Ò#ó "øô
 ô Úðús   ¶A8Á8BÂBaü  The display name of this calendar, per :rfc:`7986#section-5.1`.

    Implements both the ``NAME`` property from :rfc:`7986#section-5.1` and the widely used
    ``X-WR-CALNAME`` extension for broader client compatibility.

    Multiple language variants can be stored by setting this property more than
    once, each with a different ``LANGUAGE`` parameter value.

    Example:
        Set the name of the calendar.

        .. code-block:: pycon

            >>> from icalendar import Calendar
            >>> calendar = Calendar()
            >>> calendar.calendar_name = "My Calendar"
            >>> print(calendar.to_ical().decode())
            BEGIN:VCALENDAR
            NAME:My Calendar
            X-WR-CALNAME:My Calendar
            END:VCALENDAR

    a  A description of the calendar's content.

    Implements both ``DESCRIPTION`` from :rfc:`5545#section-3.8.1.5` and
    :rfc:`7986#section-5.2` and ``X-WR-CALDESC`` for broader calendar client
    compatibility.

    Multiple language variants can be stored by setting this property more than
    once with different ``LANGUAGE`` parameter values.

    Example:
        Add a description to a calendar.

        .. code-block:: pycon

            >>> from icalendar import Calendar
            >>> calendar = Calendar()
            >>> calendar.description = "This is a calendar"
            >>> print(calendar.to_ical().decode())
            BEGIN:VCALENDAR
            DESCRIPTION:This is a calendar
            X-WR-CALDESC:This is a calendar
            END:VCALENDAR

    aE  A CSS3 color name or value used to visually distinguish this calendar, per :rfc:`7986#section-5.9`.

    Implements both ``COLOR`` from :rfc:`7986#section-5.9` and ``X-APPLE-CALENDAR-COLOR``.
    The value is a case-insensitive CSS3 color name, for example, ``"turquoise"``, or
    a hex code, for example, ``"#ffffff"``, drawn from the
    `CSS3 color specification <https://www.w3.org/TR/css-color-3/>`_.

    Since :rfc:`7986`, individual ``VEVENT``, ``VTODO``, and ``VJOURNAL``
    subcomponents may also carry their own color.

    Example:
        .. code-block:: pycon

            >>> from icalendar import Calendar
            >>> calendar = Calendar()
            >>> calendar.color = "black"
            >>> print(calendar.to_ical().decode())
            BEGIN:VCALENDAR
            COLOR:black
            END:VCALENDAR

    zX-APPLE-CALENDAR-COLORa­  The product identifier for the software that created this iCalendar object.

This property is defined in :rfc:`5545#section-3.7.3`.
It's required exactly once per iCalendar object.

The value should be a globally unique string. The conventional format is a
Formal Public Identifier (FPI), for example, ``-//My Company//My Product//EN``, but any
unique string is acceptable.

Example:
    Set a custom product identifier on a new calendar.

    .. code-block:: pycon

        >>> from icalendar import Calendar
        >>> cal = Calendar()
        >>> cal.prodid = "-//MyApp//MyCalendar//EN"
        >>> str(cal.prodid)
        '-//MyApp//MyCalendar//EN'

See also:
    :attr:`version`
a9  The iCalendar specification version required to interpret this object.

This property is defined in :rfc:`5545#section-3.7.4`.
It's required exactly once per calendar object.
The value ``"2.0"`` indicates :rfc:`5545` compliance, which is the default used
by this library. A range such as ``"1.0;2.0"`` may indicate minimum and maximum
supported versions.

Example:
    .. code-block:: pycon

        >>> from icalendar import Calendar
        >>> cal = Calendar()
        >>> cal.version = "2.0"
        >>> str(cal.version)
        '2.0'

See also:
    :attr:`prodid`
a  The calendar scale for date and time values in this iCalendar object.

This property is defined in :rfc:`5545#section-3.7.1`. The only value currently defined is
``"GREGORIAN"`` (the default). When this property is absent, Gregorian is assumed.

Per :rfc:`7529`, non-Gregorian calendar systems are expressed via ``RRULE``
transformations rather than a different ``CALSCALE`` value. However, icalendar
currently implements only the parsing of this value, not a transformation.

Example:
    .. code-block:: pycon

        >>> from icalendar import Calendar
        >>> cal = Calendar()
        >>> cal.calscale
        'GREGORIAN'

        Ú	GREGORIAN)Údefaulta  The iTIP scheduling method associated with this calendar object, per :rfc:`5545#section-3.7.2`.

When present, ``METHOD`` indicates that this object is part of a scheduling
transaction, such as a meeting invitation or cancellation. Scheduling methods
are defined by :rfc:`5546#section-1.4` (iTIP), with values such as ``"REQUEST"``,
``"REPLY"``, ``"CANCEL"``, and ``"PUBLISH"``.

When used inside a MIME message, this value must match the ``method`` parameter
of the ``Content-Type`` header. If absent, the calendar is treated as a plain
data snapshot with no scheduling semantics.

Example:
    .. code-block:: pycon

        >>> from icalendar import Calendar
        >>> cal = Calendar()
        >>> cal.method = "REQUEST"
        >>> str(cal.method)
        'REQUEST'

c               ó   € V ^8„  d   QhRR/# )r1   r4   útimedelta | Noner5   )r6   s   "r7   r8   r9   Ù  s   € ÷ Añ AÐ"2ñ Ar:   c                óP   € V P                  R4      pV'       d   VP                  # R# )aå  A suggested minimum polling interval for fetching updates to this calendar, per :rfc:`7986#section-5.7`.

Calendar clients should not poll more frequently than this interval.
The value must be a positive duration.

Returns:
    A :class:`~datetime.timedelta`, or ``None`` when not set.

Raises:
    ValueError: When setting a non-positive (zero or negative) duration.
    TypeError: When setting a value that is not a :class:`~datetime.timedelta` or ``None``.

Example:
    .. code-block:: pycon

        >>> from datetime import timedelta
        >>> from icalendar import Calendar
        >>> cal = Calendar()
        >>> cal.refresh_interval = timedelta(hours=1)
        >>> cal.refresh_interval
        datetime.timedelta(seconds=3600)

úREFRESH-INTERVALN)r~   Údt)r]   Úrefresh_intervals   & r7   r§   ÚCalendar.refresh_intervalØ  s(   € ð2  Ÿ8™8Ð$6Ó7Ðß&6Ð×"Ñ"Ð@¸DÐ@r:   c               ó   € V ^8„  d   QhRR/# )r1   r�   r£   r5   )r6   s   "r7   r8   r9   õ  s   € ÷ &ñ &Ð&6ñ &r:   c                óÐ   € \        V\        4      '       g   Ve   \        R4      hVe!   VP                  4       ^ 8:  d   \	        R4      hVe   V =V P                  RV4       R# V =R# )zSet the REFRESH-INTERVAL.NzKREFRESH-INTERVAL must be either a positive timedelta, or None to delete it.z.REFRESH-INTERVAL must be a positive timedelta.r¥   )Ú
isinstancer   Ú	TypeErrorÚtotal_secondsr˜   r§   r}   )r]   r�   s   &&r7   r§   r¨   ô  sm   € ô ˜%¤×+Ò+°Ò0AÜð)óð ð Ò ×!4Ñ!4Ó!6¸!Ô!;ÜÐMÓNÐNØÒØÐ%Ø�H‰HÐ'¨Ö/àÒ%r:   c                ó(   € V P                  R4       R# )zDelete REFRESH-INTERVAL.r¥   N)Úpopr\   s   &r7   r§   r¨     s   € ð 	�‰Ð#Ö$r:   c          *     ól   € V ^8„  d   Qh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RR R!/# )"r1   Úcalscalez
str | NoneÚ
categorieszSequence[str]ÚcolorÚconceptsr   ÚdescriptionÚlanguageÚlast_modifiedzdate | datetime | NoneÚlinksr	   Úmethodr2   ÚorganizationÚprodidr§   r£   Úrefidszlist[str] | str | NoneÚ
related_tor
   Úsourcer™   zIterable[Component] | NoneÚuidzstr | uuid.UUID | NoneÚurlÚversionr3   r4   r"   r5   )r6   s   "r7   r8   r9     sõ   € ÷ \ñ \ð ð\ð "ð	\ð
 ð\ð 'ð\ð  ð\ð ð\ð .ð\ð !ð\ð ð\ð ð\ð !ð\ð ð\ð +ð\ð  'ð!\ð" +ð#\ð$ ð%\ð& 2ð'\ð( $ð)\ð* ð+\ð, ð-\ð. 
ñ/\r:   c          	     óœ  <€ \         SV `  VVVVVVR7      pVf;   V'       d3   T
;'       g    RpV'       d   VP                  4       MRpRV RV RV 2pM
Vf   \        pVVn        VVn        V
Vn        VVn        VVn        V	Vn	        VVn
        VVn        Ve   TM\        P                  ! 4       Vn        VVn        VVn        VVn        V# )a\  Create a new Calendar.

This creates a new Calendar in accordance with :rfc:`5545` and :rfc:`7986`.

Parameters:
    calscale: The :attr:`calscale` of the calendar.
    categories: The :attr:`categories` of the calendar.
    color: The :attr:`color` of the calendar.
    concepts: The :attr:`~icalendar.cal.component.Component.concepts` of the calendar.
    description: The :attr:`description` of the calendar.
    language: The language for the calendar. Used to generate localized `prodid`.
    last_modified: The :attr:`~icalendar.cal.component.Component.last_modified` of the calendar.
    links: The :attr:`~icalendar.cal.component.Component.links` of the calendar.
    method: The :attr:`method` of the calendar.
    name: The :attr:`calendar_name` of the calendar.
    organization: The organization name. Used to generate `prodid` if not provided.
    prodid: The :attr:`prodid` of the component. If ``None`` and ``organization`` is provided,
        generates a `prodid` in the format of "-//organization//name//language".
        If ``None`` and ``organization`` is not provided, sets it to
        :attr:`~icalendar.cal.calendar.DEFAULT_PRODID`.
    refresh_interval: The :attr:`refresh_interval` of the calendar.
    refids: :attr:`~icalendar.cal.component.Component.refids` of the calendar.
    related_to: :attr:`~icalendar.cal.component.Component.related_to` of the calendar.
    source: The :attr:`source` of the calendar.
    subcomponents: The subcomponents of the calendar.
    uid: The :attr:`uid` of the calendar.
        If None, this is set to a new :func:`uuid.uuid4`.
    url: The :attr:`url` of the calendar.
    version: The :attr:`version` of the calendar.

Returns:
    :class:`Calendar`

Raises:
    ~error.InvalidCalendar: If the content is not valid according to :rfc:`5545`.

.. warning:: As time progresses, we will be stricter with the validation.
)r·   r¸   r½   r¼   r´   r™   r%   ÚENz-//z//)rU   ÚnewÚupperÚDEFAULT_PRODIDr»   rÁ   Úcalendar_namer³   rµ   r¹   r±   r²   ÚuuidÚuuid4r¿   rÀ   r§   r¾   )r>   r±   r²   r³   r´   rµ   r¶   r·   r¸   r¹   r2   rº   r»   r§   r¼   r½   r¾   r™   r¿   rÀ   rÁ   ÚcalendarÚapp_nameÚlangrV   s   "&&&&&&&&&&&&&&&&&&&&   €r7   rÄ   ÚCalendar.new  sÞ   ø€ ô~ ™™Ø'ØØ!ØØØ'ð %ó 
ˆð Š>ŸlØ×)Ð)˜zˆHß'/�8—>‘>Ô#°TˆDØ˜<˜.¨¨8¨*°B°t°fÐ=‰FØŠ^Ü#ˆFà ˆŒØ"ˆÔØ!%ˆÔØˆŒØ*ˆÔØ ˆŒØ$ˆÔØ(ˆÔØ!šo‘s´4·:²:³<ˆŒØˆŒØ$4ˆÔ!Ø ˆŒàˆr:   c                óÈ   € V P                  R4      '       g   \        R4      hV P                  R4      '       g   \        R4      hV P                  '       g   \        R4      hR# )zùValidate that the calendar has required properties and components.

This method can be called explicitly to validate a calendar before output.

Raises:
    ~error.IncompleteComponent: If the calendar lacks required properties or
        components.
r(   zCalendar must have a PRODIDr'   zCalendar must have a VERSIONz@Calendar must contain at least one component (event, todo, etc.)N)r~   r   r™   r\   s   &r7   ÚvalidateÚCalendar.validatej  s[   € ð �x‰x˜×!Ò!Ü%Ð&CÓDÐDØ�x‰x˜	×"Ò"Ü%Ð&DÓEÐEØ×!×!Ð!Ü%ØRóð ñ "r:   r5   )r'   r(   r)   r*   r+   r,   r-   r.   )r(   r'   )r(   r'   r)   r*   r/   )Ú
CATEGORIESr+   r-   )r?   )F)Nr5   NNNNNNNNNNNNNNNNNz2.0)6Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r2   Úcanonical_orderÚrequiredÚ
singletonsrJ   Úclassmethodr?   rF   r   r=   Úpropertyr^   rc   rh   rm   rr   r‚   rŒ   r‡   r   ÚDEFAULT_FIRST_DATEÚDEFAULT_LAST_DATErž   r   rÇ   rµ   r   r³   r   r²   r   r¿   r»   rÁ   r±   r¹   r   rÀ   r   r¾   r§   ÚsetterÚdeleterr   ÚimagesrÄ   rÏ   Ú__static_attributes__Ú__classcell__)rV   s   @r7   r%   r%   -   sh  ø† ñð  €Dð	€Oð€Hð€Jð€Hð ö=ó ð=ð ôWó ðWð Øöó ó ðð Øôó ó ðð ÷
ñ 
ó ð
ð" ô#ó ð#ð" ô"ó ð"ð ô%ó ð%ð ô*ó ð*ð ô&ó ð&õõ&ð  ô&ó ð&ð  $×6Ñ6Ø"×4Ñ4÷0)ñd 1ØØð	ó€Mñ8 /ØØð	ó€Kñ: #Øð	ð, 	!ó1€Eð4 %€JØ
€CÙ#Øð	ó€Fñ4 %Øð	ó€Gñ0 &Øð	ð$ ô)€Hñ, $Øð	ó€Fð0 €CØ€FàôAó ðAð6 ×Ñô&ó ð&ð ×Ññ%ó ð%ð €Fà÷\ñ \ó ð\÷|ð r:   r%   )9rÖ   Ú
__future__r   rÈ   r   r   Útypingr   r   r   r   Úicalendar.attrr   r	   r
   r   r   r   r   r   r   r   Úicalendar.cal.componentr   Úicalendar.cal.examplesr   Úicalendar.cal.timezoner   Úicalendar.errorr   Úicalendar.parser.ical.calendarr   Úicalendar.versionr   Úcollections.abcr   r   r   Úpathlibr   Úicalendar.cal.availabilityr   Úicalendar.cal.eventr   Úicalendar.cal.free_busyr   Úicalendar.cal.journalr    Úicalendar.cal.todor!   Úicalendar.compatibilityr"   Úicalendar.parser.ical.componentr#   rÆ   r%   Ú__all__r5   r:   r7   Ú<module>rö      sƒ   ðÙ &å "ã Ý ß 9Ó 9÷÷ ÷ õ .Ý .Ý +Ý /Ý =Ý )çß2ß'Ýå7Ý)Ý0Ý-Ý'Ý,ÝCð .¨k¨]¸$Ð?€ôM	ˆyô M	ð` ˆ,‚r:   